我的标题有点神秘,但我想不出一个清晰的标题。
首先,两个代码片段建立一个参考点(希望我没有错别字):
输入Scanner
'''
Scanner sc = new Scanner(System.in);
for (int i=0; i<10; ++ i) {
System.out.print("Please input a value:");
String answer = sc.next();
// do something with this string
}
...
输入JOptionPane
:
...
for (int i=0; i<10; ++ i) {
String answer = JOptionPane.showInputDialog("Please input a value");
// do something with this string
{
因此,在上述示例中,我们要求用户输入一个固定次数的值。如何在Swing应用程序中实现相同的功能?
我可以毫无问题地创建一个JFrame
with JPanel
(作为它的内容窗格)并添加JLabel
(带提示)和JTextField
到这个面板。我还可以为ActionListener
文本字段创建ActionPerformed
检索值并处理它的方法。字符串处理不是一个长时间运行的任务,所以我不相信我需要一个单独的工作线程。
由于我们不能真正强迫用户做任何事情,我打算用它javax.swing.Timer
来确保及时响应。
我不明白的是如何实现循环或任何其他形式的控制,以确保用户输入(和程序检索)值的确切次数。如何将这样的逻辑注入事件驱动系统?
一旦我设置了 GUI 部分并提交了它的实例以在 EDT 上调用,我似乎放弃了所有控制权。
我是否最初提交setEditable
设置为的文本字段,false
然后创建一个循环invokeAndWait
以Runnable
启用编辑(并在 中禁用它ActionPerformed
)?
请指出我正确的方向。