javafx ui界面使用主线程,正常情况下主线程中执行的代码逻辑时 主界面会卡住无响应所有需要一个单独的线程来处理这部分业务
javafx提供了task类 以下是在一个按钮点击时间中开启task线程来完成任务 而此时主线程的ui不会被影响
Task<String> task = new Task<String>() {
@Override
protected String call() throws Exception {
return deviceState();
}
@Override
protected void running() {
}
@Override
protected void succeeded() {
taskSuccess(getValue());
}
@Override
protected void cancelled() {
Alert _alert = new Alert(Alert.AlertType.INFORMATION);
_alert.setTitle("cancelled");
_alert.show();
}
@Override
protected void failed() {
taskFailed(getException());
}
};
new Thread(task).start();
javafx中只有主线程来可以对ui界面中的元素做操作 子线程想改变ui中的元素时 javafx提供了方法
Platform.runLater(new Runnable() {
@Override
public void run() {
//更新JavaFX的主线程的代码放在此处
// p.cancelProgressBar();
lab1.setText("正在检查文件 "+obj.getName()+i);
}
});