我有一个主要类JProgressBar
。在主类中,我创建了一个类(名为Opener
)的实例,该类具有读取通常较大的文本文件的方法(> 50000行文本)。
我将JProgressBar的引用传递给读取txt文件的Opener类的方法,以便可以从Opener类访问进度条。
方法定义如下:
public void readtxtfile (JProgressBar myjProgressBar){....}
我这样称呼方法:
Opener myopener = new Opener();
myopener.readtxtfile (jProgressBar1);
我知道对进度条的引用工作正常,因为我可以从那里设置它(当创建主类时,进度条设置不可见)。
在readtxtfile
方法中,我在读取txt文件时更改进度条的值。
myjProgressBar.setValue(mycounter);
myjProgressBar.revalidate();
myjProgressBar.repaint();
我的问题是进度条没有重新绘制,因为它的值会发生变化。 我该怎么办?
P.S: 完成txt文件的所有读取后,进度条最后刷新。但意味着没有任何可见的事情发生。
答案 0 :(得分:3)
这听起来更像是你试图从事件调度线程中读取文件,阻止它执行任何重新绘制。
可能最好的选择是使用SwingWorker
在后台运行并加载文件的内容并使用它的属性更改支持来更新进度。