我正在编写一个简单的文字游戏,因此我不愿透露自己的内容
以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并尝试使用此方法时,该窗口会冻结。
如何使窗口正确显示并等待用户输入?
我将感谢您的任何建议
答案 0 :(得分:0)
听起来像您在等待主线程上的输入,这将阻止它,因此窗口冻结。尝试将等待代码(nextToken
方法)放在单独的线程中。