Java 中的扫描仪可以从对话框中读取文本吗?

Can Scanner in Java read text from a dialog box

提问人:user36064 提问时间:11/10/2008 最后编辑:Peter Lawreyuser36064 更新时间:6/15/2015 访问量:2004

问:

扫描仪只能从系统控制台获取输入?无法从任何对话窗口获取?

谢谢。

java java.util.scanner

评论


答:

10赞 Bill the Lizard 11/10/2008 #1

扫描仪可以从实现可读接口的任何对象中读取文本。

这包括 、 、 、 、 和 (来自 javadoc)。不幸的是,这不包括任何对话框窗口。BufferedReaderCharArrayReaderCharBufferFileReaderFilterReaderInputStreamReaderLineNumberReaderPipedReaderPushbackReaderStringReaderReadable

将对话窗口挂接到 的最简单方法可能是使用接受 的构造函数构建 ,将用户输入从对话框直接传递给 。ScannerScannerStringScanner

评论

0赞 Greg Case 11/10/2008
当然可以配置一个对话框窗口来流数据抛出一个 InputStream,然后可以将其挂接到扫描仪。
0赞 Bill the Lizard 11/10/2008
当然可以。从对话框中获取用户输入的方法有很多,我以前从未考虑过这种可能性。
0赞 Greg Case 11/10/2008
当然是真的。我认为最初问题的根源可能只是缺乏对替代方案的知识或理解。我当然观察到 - 最近,甚至 - 扫描仪被用作输入的第一选项,而它显然不是合适的选择。
0赞 Greg Case 11/10/2008
另外,旁注 - 为什么要制作 StringReader?扫描仪已经可以直接在字符串上创建;额外的层只会增加开销。
0赞 Bill the Lizard 11/10/2008
@Greg:又对了。我以前从未使用过该构造函数。:)我认为这个问题的原因可能是为了让他们可以使用 Scanner 的一些便捷方法来解析输入。
1赞 Greg Case 11/10/2008 #2

否;可以为任意数量的可能输入创建扫描程序:Files、InputStreams、ReadableByteChannels、Strings 以及支持 Readable 接口的任何内容。请参阅构造函数摘要

0赞 PhiLho 11/10/2008 #3

好吧,我尝试了在 Java 中确定文件总字数的最佳方法中给出的示例:只需替换为 String 变量,它就可以工作了......new File("my-text-file.txt")

因此,如果将组件的文本内容放入 String 中,则可以使用 Scanner。

1赞 Peter Lawrey 5/3/2015 #4

您可以在对话框或标签上使用扫描仪,方法是首先获取文本并对其进行扫描。

String text = input.getText();
Scanner scan = new Scanner(text);