JavaFX-等待用户输入的方法

时间:2018-12-13 17:29:02

标签: java javafx input

我正在编写一个简单的文字游戏,因此我不愿透露自己的内容
以cmd的形式显示在自定义窗口中,该窗口由一个使用的TextArea组成
用于输出和用户输入。所以我需要一个等待String
的方法 用户写然后返回它。
在Swing中,我将执行以下操作(在Window类中):

public String nextToken() {
    synchronized (nextToken) {
        while (nextToken.isEmpty())
            try {
                nextToken.wait();
            } catch (InterruptedException e) {
                print(e.getLocalizedMessage());
            }
        String tmp = nextToken.remove(0);
        lastToken = text.getText();
        newLine();
        return tmp;
    }
}  

然后按下Enter的ActionListener:

public void actionPerformed(ActionEvent arg0) {
            synchronized (nextToken) {
                nextToken.add(text.getText().substring(lastToken.length(), text.getText().length()));
                nextToken.notify();
            } }; };

但是当我使用JavaFX创建一个Window并尝试使用此方法时,该窗口会冻结。
如何使窗口正确显示并等待用户输入?
我将感谢您的任何建议

1 个答案:

答案 0 :(得分:0)

听起来像您在等待主线程上的输入,这将阻止它,因此窗口冻结。尝试将等待代码(nextToken方法)放在单独的线程中。