我对服务使用有一个“小”问题。 下面的代码不起作用:文本值不在HMI中更新,但其值是正确的!!?
public class FilterController
{
@FXML
private TextField totalItemCount;
private final Service service = new Service() {
@Override
protected Task createTask()
{
return new Task<Void>() {
@Override protected Void call() throws Exception {
int x = (int) (Math.random() * 10000);
System.out.println("x = " + x);
try {
totalItemCount.setText(Integer.toString(x));
System.out.println("totalItemCount = " + totalItemCount.getText());
}
catch (Throwable ex)
{
System.err.println("Fail");
ex.printStackTrace();
}
return null;
}
};
}
@Override
protected void failed()
{
super.failed();
System.err.println("FAILED");
}
};
@FXML
public void handleFindProblemsEvent()
{
System.out.println("Handle Find Problems");
service.restart();
}
}
我没有任何错误。未显示失败消息,因此我可以认为已完成工作但情况并非如此。 这是一个错误还是一个糟糕的用法? 谢谢你的帮助。
注意:我使用jre1.8.0_25
答案 0 :(得分:0)
您尚未在任何地方调用failed()
方法。
答案 1 :(得分:0)
我假设您在自己的线程中执行Task,因此您需要使用Platform.runLater同步调用fx API
答案 2 :(得分:0)