猛禽洛的程式筆記庫

[JavaFx] 有進度條的Dialog (ProgressDialog)

當需要長時間運算時,或是開啟複雜的檔案時,會希望顯示目前的進度狀況。

如附圖:

 

1.首先需要安裝controlsfx套件,需要根據你的jdk版本安裝,本範例為jdk8:

https://search.maven.org/artifact/org.controlsfx/controlsfx

<dependency>
  <groupId>org.controlsfx</groupId>
  <artifactId>controlsfx</artifactId>
  <version>8.40.18</version>
</dependency>

 

實現原理為使用TaskProgressDialog連動,並定期回報進度,程式執行完成後自動關閉Dialog

2.建立Task

private Task loadTask;
public Task loadTask(File selectExe){
  return new Task() {
    @Override
    protected Object call() throws Exception {
      //跑跑跑
      updateProgress(20, 100);//進度回報 (目前進度, 總進度)
      
      System.out.println(selectExe);
      //跑跑跑
      //...
      //...

      updateProgress(100, 100);
      
      return true;
    }
  };
}

 

3.建立ProgressDialog並連動loadTask

loadTask = loadTask(selectFile);//可以帶變數進執行序
ProgressDialog pdLoadFile = new ProgressDialog(loadTask);//綁定
pdLoadFile.setContentText("載入中...請稍後...");
pdLoadFile.setTitle("載入中");
new Thread(loadTask).start();//啟動
pdLoadFile.showAndWait();//鎖定畫面等待執行完成

 

這樣即可達到邊載入邊顯示進度Dialog的功能了。

-END-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *