我的头衔有些神秘,但我无法想出一个明确的标题。
首先,两个代码片段建立一个参考点(希望我没有拼写错误):
使用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
(作为其内容窗格)创建JPanel
并将JLabel
(带提示)和JTextField
添加到此面板,我没有任何问题。我还可以为文本字段创建ActionListener
ActionPerformed
方法来检索值并对其进行处理。字符串处理不是一个长期运行的任务,所以我不相信我需要一个单独的工作线程。
由于我们无法强制用户执行任何操作,因此我计划使用javax.swing.Timer
来确保及时响应。
我不明白的是如何实现循环或任何其他形式的控制以确保用户输入(并且程序检索)该值的确切次数。如何将这种逻辑注入事件驱动系统?
一旦我设置了GUI部件并提交了要在EDT上调用的实例,我似乎放弃了所有控制。
我是否最初提交文本字段时将setEditable
设置为false
,然后创建一个循环invokeAndWait
Runnable
以启用编辑(并将其禁用)在ActionPerformed
)?
请指出我正确的方向。
答案 0 :(得分:5)
这取决于你想要如何实现它......
提供所需数量的字段(在您的示例中为10)和JButton
,以便在填写完所有字段之前,单击该按钮将仅向用户提供消息并重新关注无效字段场...
为用户提供单个字段(和标签)和按钮。在他们填写该字段之前,按下按钮会提示他们并重新聚焦该字段。
当用户填写所需信息并点击按钮时,您递增一个计数器,重置该字段并继续,直到您的计数器达到其限制...
使用只有一列和五行的JTable
...这是第一个解决方案的简化(取决于您的观点)解决方案......