因此,当我启动应用程序时,我在窗口上显示一个按钮作为加载屏幕/单击播放按钮。因此,当应用程序启动时,它会显示“正在加载”并在initalize方法中设置为禁用。然后我的控制器实例化另一个使用4个线程来计算事物的类,这应该在用户看到加载屏幕的时候持续。所以我的Controller实例化一个私有类,它充当具有多个线程的类的回调。当该类完成计算时,它将回调控制器它已完成。当发生这种情况时,我想再次启用我的按钮并更改文本,以便用户可以单击它并开始。这是代码的一部分:
@FXML
private Button btnStart;
private final MuliThreadedClass treeBuilderStarter = new TreeBuilderStarter(board, new CBTreeDoneImpl());
private class CBTreeDoneImpl implements CBThreadDone{
@Override
public void done(ComplextObject obj) {
btnStart.setDisable(false);
btnStart.setText("Click to start!");
}
}
@FXML
public void initialize() {
btnStart.setDisable(true);
}
现在调用回调并且
btnStart.setDisable(false);
btnStart.setText("Click to start!");
执行我得到一个异常,说明非线程上的IllegalStateException。我理解这个问题,但你会如何解决这个问题呢?
答案 0 :(得分:2)