PM *_*7-1 1 java swing actionlistener invokeandwait
我的头衔有些神秘,但我无法想出一个明确的标题.
首先,两个代码片段建立一个参考点(希望我没有拼写错误):
输入 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
}
...
Run Code Online (Sandbox Code Playgroud)
输入JOptionPane:
...
for (int i=0; i<10; ++ i) {
String answer = JOptionPane.showInputDialog("Please input a value");
// do something with this string
{
Run Code Online (Sandbox Code Playgroud)
因此,在上面的示例中,我们要求用户输入固定次数的值.如何在Swing应用程序中实现相同类型的功能?
我可以创建一个JFramewith JPanel(作为其内容窗格)并添加JLabel(带有提示符)和JTextField此面板.我还可以为ActionListener文本字段创建哪个ActionPerformed方法来检索值并对其进行处理.字符串处理不是一个长期运行的任务,所以我不相信我需要一个单独的工作线程.
由于我们无法真正强迫用户做任何事情,我计划使用javax.swing.Timer以确保及时响应.
我不明白的是如何实现循环或任何其他形式的控制,以确保用户输入(并且程序检索)该值的确切次数.如何将这种逻辑注入事件驱动的系统?
一旦我设置了GUI部件并提交了要在EDT上调用的实例,我似乎放弃了所有控制.
难道我最初提交我的文本字段setEditable设置为false,然后创建一个循环,将invokeAndWait一个Runnable使编辑(并禁用它放回ActionPerformed)?
请指出我正确的方向.
那么这取决于你想要实现它的方式......
提供所需数量的字段(在您的示例中为10)和a JButton,以便在填写完所有字段之前,单击按钮将仅向用户提供消息并重新聚焦无效字段...
为用户提供单个字段(和标签)和按钮.在他们填写场地之前,按下按钮会提示他们并重新聚焦场地.
当用户填写所需信息并单击按钮时,您递增计数器,重置字段并继续,直到您的计数器达到其限制为止...
使用JTable只有一列和五行的...这是简化(取决于你的观点)第一个解决方案的解决方案......