我正在玩Java的ProgressMonitorInputStream来监控数据流经BufferedInputStream。这是我正在尝试的代码:
InputStream in = new BufferedInputStream(
new ProgressMonitorInputStream(
new JFrame(),"Scanning",new FileInputStream(dir.getSearchInputFile())));
这非常合适,并弹出一个新的JFrame窗口,其中包含一个显示输入流进度的进度条。
有没有让ProgressMonitorInputstream更新另一个JFrame中存在的现有JProgressBar?
我尝试了各种方法,例如使用构造函数传递JProgressBar,或者尝试在参数中指定帧。每次我尝试,我都会得到一个新的JFrame。
我是不是错了?
非常感谢任何输入。
由于
答案 0 :(得分:5)
正在监控其进度的SwingWorker
并不关心谁在听。只需在另一帧中实现PropertyChangeListener
接口,并将监听器添加到worker,如ProgressMonitorDemo
所示。
附录:作为一个具体示例,在演示中添加进度条:
private JProgressBar bar = new JProgressBar();
在面板的构造函数中添加它:
this.add(bar);
在面板的propertyChange()
监听器中更新它:
bar.setValue(progress);