簡體   English   中英

javafx db加載進度指示器

[英]javafx db load progress indicator

private Popup popupProgressIndicator;   
 public void showProgressIndicator(ScreensController myController) {
        if (popupProgressIndicator == null) {
            ProgressIndicator indicator = new ProgressIndicator(-1.0);
            indicator.setPrefHeight(200);
            indicator.setPrefWidth(200);
            indicator.setLayoutX(0);
            indicator.setLayoutY(0);
            popupProgressIndicator = new Popup();
            popupProgressIndicator.getContent().add(indicator);
        }
        if (!popupProgressIndicator.isShowing()) {
            popupProgressIndicator.show(primaryStage);
            popupProgressIndicator.centerOnScreen();
        }
        myController.setDisable(true);
    }
    public void hideProgressIndicator(ScreensController myController) {
        if (popupProgressIndicator.isShowing())
            popupProgressIndicator.hide();
        myController.setDisable(false);
    }

嗨,我正在使用上面的代碼在javafx應用程序中創建進度指示器。 我想在從db加載數據或將數據保存到db時顯示進度指示器。

@FXML
private void addDesignationSelect() {
    showProgressIndicator(myController);
    Task<Void> task = new Task<Void>() {
        @Override
        protected Void call() throws Exception {
            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                  // doing some heavy db process
                }
            });
            return null;
        }
        @Override
        protected void succeeded() {
            hideProgressIndicator(myController);
        }
        @Override
        protected void failed() {
            super.failed();
            hideProgressIndicator(myController);
        }
    };
    new Thread(task).start();
}

我已使用“任務”加載進度條,但未顯示進度條。 我做錯了什么?

在啟動線程/任務之前,請調用show方法showProgressIndicator 這就是為什么您的窗口不顯示(或顯示時間很短)的原因

您可以在myController.setDisable(true);之后打開progressBar myController.setDisable(true); ,您可以等待任務返回特定值(例如,使用Task<Boolean> )。

isDone()方法將告訴您任務何時結束以及何時調用hideProgressIndicator

另一個選擇是從您的Task本身進行UI修改,請參見此處的示例Task

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM