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);
                }
            });
相關文章
相關標籤/搜索