javafx ui界面使用主线程,正常状况下主线程中执行的代码逻辑时 主界面会卡住无响应全部须要一个单独的线程来处理这部分业务java
javafx提供了task类 如下是在一个按钮点击时间中开启task线程来完成任务 而此时主线程的ui不会被影响ide
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提供了方法 ui
Platform.runLater(new Runnable() { @Override public void run() { //更新JavaFX的主线程的代码放在此处 // p.cancelProgressBar(); lab1.setText("正在检查文件 "+obj.getName()+i); } });