1

我的标题有点神秘,但我想不出一个清晰的标题。

首先,两个代码片段建立一个参考点(希望我没有错别字):

输入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应用程序中实现相同的功能?

我可以毫无问题地创建一个JFramewith JPanel(作为它的内容窗格)并添加JLabel(带提示)和JTextField到这个面板。我还可以为ActionListener文本字段创建ActionPerformed检索值并处理它的方法。字符串处理不是一个长时间运行的任务,所以我不相信我需要一个单独的工作线程。

由于我们不能真正强迫用户做任何事情,我打算用它javax.swing.Timer来确保及时响应。

我不明白的是如何实现循环或任何其他形式的控制,以确保用户输入(和程序检索)值的确切次数。如何将这样的逻辑注入事件驱动系统?

一旦我设置了 GUI 部分并提交了它的实例以在 EDT 上调用,我似乎放弃了所有控制权。

我是否最初提交setEditable设置为的文本字段,false然后创建一个循环invokeAndWaitRunnable启用编辑(并在 中禁用它ActionPerformed)?

请指出我正确的方向。

4

1 回答 1

5

好吧,这取决于您要如何实现它...

你可以...

提供所需数量的字段(在您的示例中为 10)和 a JButton,以便在填写所有字段之前,单击该按钮只会为用户提供一条消息并重新关注无效字段...

你可以...

为用户提供单个字段(和标签)和按钮。在他们填写完该字段之前,按下按钮会提示他们并重新关注该字段。

当用户填写所需信息并单击按钮时,您会增加一个计数器,重置该字段并继续操作,直到您的计数器达到其限制...

你可以...

使用JTable只有一列和五行的a ...这是第一个解决方案的简化(取决于您的观点)解决方案...

于 2014-02-27T03:03:56.600 回答