gpt4 book ai didi

java - 为什么 ProgressMonitor 在第二次调用时不显示?

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:47 24 4
gpt4 key购买 nike

我编写了一个程序,它使用默认 java 运行时中的进度条类。它工作得很好,除了它只能工作一次。我用它来显示各种图像加载到 GUI 中的情况,并且在启动时工作正常。但是,一旦我再次调用它,它只会显示一个没有内容的 JFrame。我可以拖动 JFrame 以及所有内容,只是它不会显示任何内容。这是很奇怪的,因为它在第一次运行时有效,但之后就不起作用了。这是我的代码:

    public void prefetch (){
try{
pageURLs = mangaEngine.getPageList();
monitor = new ProgressMonitor(parent, "Loading Chapter..,", null, 0, mangaEngine.getPageList().length);
pages = new StretchIconHQ[pageURLs.length];
//Resets page counter to first page by fetching pages in reverse order
monitor.setMaximum(pageURLs.length-1);
for(int i = pageURLs.length-1; i>=0; i--){
pages[i] = mangaEngine.loadImg(pageURLs[i]);
monitor.setProgress(pageURLs.length-1-i);
monitor.setNote("Loading Image:" + (pageURLs.length-1-i) + " of " + (pageURLs.length-1));
}

}
catch(Exception ex){
ex.printStackTrace();
}
}

关于如何修复它有什么想法吗?

最佳答案

您需要在后台线程(例如由 SwingWorker 创建的线程)中运行长时间运行的代码。

事实上,Progress Monitor Tutorial描述了如何准确执行此操作:

  • 创建一个 SwingWorker
  • 为其添加 PropertyChangeListener
  • 监听“progress”属性
  • 使用 SwingWorker 的进度更新监视器的进度。

关于java - 为什么 ProgressMonitor 在第二次调用时不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com