繁体   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