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的值),不需要重新验证或重新绘制-这是内部处理的。