javafx 中线程使用的问题

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);
                }
            });
相关文章
相关标签/搜索