[英]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.