我有以下代码:
@FXML
private void test(){
textField.setText("Pending...");
boolean passed = doStuff();
if(passed){
textField.setText("OK");
} else {
textField.setText("Error");
}
}
我试图实现的是,当 doStuff() 在 GUI 的 textField 中执行他的操作时,应该写成“Pending...”,并且一旦完成,它应该变为“OK”/“Error”。
我希望在 doStuff 运行时阻止 GUI,因此用户必须等待并且不能单击其他内容。
但是发生的情况是,一旦我开始测试,它就会执行 doStuff(),但只会用“OK”/“Error”更新 textField,但我从来没有看到“Pending...”。
我觉得我以某种方式更新了 GUI,但我不确定应该如何完成。
更新: 我尝试将 doStuff 移到另一个线程中:
@FXML
private void test(){
textField.setText("Pending...");
Thread t = new Thread(){
public void run(){
boolean passed = doStuff();
if(passed){
textField.setText("OK");
} else {
textField.setText("Error");
}
}
};
t.start();
t.join();
}
如果我删除 t.join(); 它将起作用 命令,但不会阻止 UI。所以我现在很茫然。
桃花长相依
相关分类