Java 从其他类访问时重新绘制progressbar

Java 从其他类访问时重新绘制progressbar,java,swing,jprogressbar,Java,Swing,Jprogressbar,我有一个主类,它有一个JProgressBar。从主类中,我创建了一个类的实例(名为Opener),该类有一个方法来读取通常较大的文本文件(>50000行文本) 我将JProgressBar的引用传递给读取txt文件的Opener类的方法,以便可以从Opener类访问progressbar 方法的定义如下: public void readtxtfile (JProgressBar myjProgressBar){....} 我这样调用该方法: Opener myopener = new

我有一个主类,它有一个
JProgressBar
。从主类中,我创建了一个类的实例(名为
Opener
),该类有一个方法来读取通常较大的文本文件(>50000行文本)

我将JProgressBar的引用传递给读取txt文件的Opener类的方法,以便可以从Opener类访问progressbar

方法的定义如下:

 public void readtxtfile (JProgressBar myjProgressBar){....}
我这样调用该方法:

 Opener myopener = new Opener();
 myopener.readtxtfile (jProgressBar1);
我知道对progressbar的引用工作正常,因为我可以将它设置为可见(当创建主类时,progressbar设置为不可见)

readtxtfile
方法中,我在读取txt文件时更改progressbar的值

 myjProgressBar.setValue(mycounter);
 myjProgressBar.revalidate();
 myjProgressBar.repaint();
我的问题是,进度条不会随着其值的更改而重新绘制。 我该怎么办

附言:
完成txt文件的所有读取后,进度条最后刷新。但是,这意味着它没有发生任何可见的变化。

听起来更像是试图从事件调度线程中读取文件,阻止它执行任何重新绘制

最好的选择可能是使用
SwingWorker
在后台运行,加载文件内容,并使用其属性更改支持更新程序

看一看细节


看一看,举个例子

听起来更像是从事件调度线程中读取文件,阻止它执行任何重新绘制。只是一个一般说明:设置JSomething的核心属性(如progressbar的值),不需要重新验证或重新绘制-这是内部处理的。