当前位置: 首页 > 知识库问答 >
问题:

JavaFX应用程序:读取文件时在工具栏中显示进度

慕学海
2023-03-14

我有一个csv文件阅读器,它调用一个应该更新进度条的方法。然而,即使我试图用平台来安排进度,进度条也不会更新。晚点。文件读取是同步处理的一部分,所以我不能只在自己的线程中运行读卡器——我必须等待线程加入。progressbar正在其他环境中工作。我尝试的是:

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。这使得progressbar工作起来。然而,它也迫使我使用这个平台。runLater来运行GUI更新,因为只有JavaFX线程可以更新GUI的某些部分。我的新问题是平台。runLater:它以后进先出的顺序运行内容,这与处理顺序相反。我想你不可能拥有一切。

共有1个答案

凤伟泽
2023-03-14

您可以创建一个服务类(LogFileService扩展服务)并绑定progressProperty。在服务类中,可以使用updateProgress来更新进度。

 类似资料:
  • 我对JavaFX和JavaFX Scene Builder是新手,几个星期以来一直在研究并试图弄清楚如何简单地从文本文件中读取并在文本中显示其内容。我的controller类中有一个很好的文件读取功能,但我不知道如何将文本文件显示到fxml文档中的文本区域。我已经学会了如何单击按钮并使文件显示在文本区域中,但我希望GUI加载后立即在文本区域中显示内容。如果任何人有一个想法如何去做这件事,你的帮助将

  • 我发现这两种可能性显示一个pdf文件。 > 打开webView,使用: 使用外部应用程序打开pdf文件: Intent Intent=新的意图(Intent.action_view);Intent.SetDataAndType(URI.FromFile(outFile),“Application/PDF”);Intent.SetFlags(Intent.Flag_Activity_NO_Histo

  • 我尝试在我的主题中设置以下内容,但似乎并没有改变什么:

  • 我想在android应用程序中添加工具栏,但我的StudentDashboard活动中出现了此错误。在git上推送我的应用程序后,在运行时使用java。我找不到它背后的问题。 学生仪表板ctivity.java 风格xml 请告诉我,我如何解决这个错误?

  • 我在活动文件中有一个膨胀的视图,布局文件碰巧有一个工具栏小部件,我希望用图标填充。我尝试使用code但是没有显示出来,工具栏文本也没有显示出来。布局的代码是这样的... 如何成功地使此工具栏在一个膨胀的视图中显示图标和文本?

  • 在我的MainActivity和我的ChallongeLogin中,在应用程序的顶部有一个很大的栏,列出了我的应用程序的名称。然而,当我最终读到ChallongeEvents时,这个条就消失了...我不记得做过什么特别的事情让这个酒吧消失了。为什么会不了了之?