2011-12-04 22 views
2

我只是玩Java的ProgressMonitorInputStream來監視數據,因爲它流經一個BufferedInputStream。這是我目前正試圖代碼:Java ProgressMonitorInputStream使用現有的JProgressBar

InputStream in = new BufferedInputStream(
    new ProgressMonitorInputStream(
    new JFrame(),"Scanning",new FileInputStream(dir.getSearchInputFile()))); 

這工作完全正常,和一個新的JFrame窗口顯示輸入流的進度的進度條彈出。

有沒有辦法讓ProgressMonitorInputstream更新另一個JFrame中存在的現有JProgressBar?

我試過各種方法,例如傳遞JProgressBar與構造函數,或試圖指定框架內的參數。每次嘗試時,我都會得到一個新的JFrame。

我對這一切都錯了嗎?

任何輸入將不勝感激。

感謝

回答

5

SwingWorker其進展正被監視不在乎誰在聽。只需在其他框架中實現PropertyChangeListener接口並將偵聽器添加到工作人員,如ProgressMonitorDemo中所示。

附錄:作爲一個具體的例子,添加一個進度條到演示:

private JProgressBar bar = new JProgressBar(); 

添加它在面板的構造函數:

this.add(bar); 

更新它在面板的propertyChange()聽衆:

bar.setValue(progress);