Java ProgressMonitorInputStream使用现有的JProgressBar

Ton*_*ony 2 java swing inputstream progressmonitor progress-bar

我正在玩Java的ProgressMonitorInputStream来监视数据流经BufferedInputStream.这是我正在尝试的代码:

InputStream in = new BufferedInputStream(
     new ProgressMonitorInputStream(
     new JFrame(),"Scanning",new FileInputStream(dir.getSearchInputFile())));
Run Code Online (Sandbox Code Playgroud)

这非常合适,并弹出一个新的JFrame窗口,其中包含一个显示输入流进度的进度条.

有没有让ProgressMonitorInputstream更新另一个JFrame中存在的现有JProgressBar?

我尝试了各种方法,例如使用构造函数传递JProgressBar,或尝试在参数中指定帧.每次我尝试,我只是得到一个新的JFrame.

我错了吗?

任何投入将不胜感激.

谢谢

tra*_*god 5

SwingWorker其进展正被监视不在乎谁在听.只需PropertyChangeListener在另一个框架中实现该接口,并将监听器添加到worker中,如图所示ProgressMonitorDemo.

附录:作为一个具体示例,在演示中添加进度条:

private JProgressBar bar = new JProgressBar();
Run Code Online (Sandbox Code Playgroud)

在面板的构造函数中添加它:

this.add(bar);
Run Code Online (Sandbox Code Playgroud)

在面板的propertyChange()监听器中更新它:

bar.setValue(progress);
Run Code Online (Sandbox Code Playgroud)