簡體   English   中英

JavaFX應用程序:讀取文件時在欄中顯示進度

[英]JavaFX app: show progress in bar while reading file

我有一個csv文件閱讀器,它調用一種應更新進度條的方法。 但是,即使我嘗試使用Platform.runLater安排進度條,進度條也不會更新。 文件讀取是同步處理的一部分,因此我不能只在自己的線程中運行讀取器-我必須等待線程加入。 進度條在其他情況下也可以工作。 我試過的

public CsvFile(File file, SEPARATOR separator)
{
    this.file = file;
    this.separator = separator.value();
    setPattern();

    Thread thread = new Thread() {
        public void run() {
            readFile();
        };
    };
    thread.start();
    try
    {
        Thread.sleep(5000);//HACK
        thread.join();//HACK
    }
    catch (InterruptedException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

還有進度條方法,由readFile()調用:

public void setProgressExecute(double progress)

{
    //ProgressExecute.setProgress(progress);
    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            ProgressExecute.setProgress(progress);
        }
    });
}

更新

我現在在自己的線程中調用new CsvFile 這使進度條起作用。 但是,這也迫使我使用Platform.runLater來運行GUI更新,因為只有JavaFX線程才能更新GUI的某些部分。 我的新問題是Platform.runLater:它以LIFO順序運行內容,從而顛倒處理順序。 好吧,我想你不可能擁有全部。

您可以創建一個服務類(LogFilesService擴展Service)並綁定progressProperty。 在Service類中,可以使用updateProgress更新進度。

暫無
暫無

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

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