如何在文本字段中等待输入?

Der*_*rek 6 java applet

我正在将控制台应用程序转换为使用Swing的控制台应用程序.目前我希望我的程序能够做到类似的事情,.nextInt();我怎么能通过使用.getText();或类似的东西来实现这一点?

简而言之;

如何保持程序的执行,直到用户在文本字段中输入内容并按下回车键.

dac*_*cwe 5

更新:所以你想等待用户从GUI输入内容.这是可能的,但需要同步,因为GUI在另一个线程中运行.

所以步骤是:

  1. 创建一个"holder"对象,将结果从GUI分配到"逻辑"线程
  2. "逻辑"线程等待输入(使用holder.wait())
  3. 当用户输入文本时,它同步"holder"对象并给出结果+通知"逻辑"线程(带holder.notify())
  4. "逻辑"线程从其锁定中释放并继续.

完整示例:

public static void main(String... args) throws Exception {
    final List<Integer> holder = new LinkedList<Integer>();

    final JFrame frame = new JFrame("Test");

    final JTextField field = new JTextField("Enter some int + press enter");
    frame.add(field);
    field.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            synchronized (holder) {
                holder.add(Integer.parseInt(field.getText()));
                holder.notify();
            }
            frame.dispose();
        }
    });

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);

    // "logic" thread 
    synchronized (holder) {

        // wait for input from field
        while (holder.isEmpty())
            holder.wait();

        int nextInt = holder.remove(0);
        System.out.println(nextInt);
        //....
    }
}
Run Code Online (Sandbox Code Playgroud)