2013-02-09 18 views
2

我試圖第一次使用progressBar。我想使用progressBar保留線程的記錄---我看過this,但它沒有幫助。如何使用progressBar查看線程進度

有誰知道如何做到這一點?

我嘗試使用mp3文件的字節來更新progressBar,但我沒有成功。 我想用我用來播放mp3文件的線程。

這是MP3播放器的屏幕截圖。

The mp3 player I'm working on

+0

您已經閱讀教程。我們可以添加什麼?它沒有幫助嗎?有什麼問題?你嘗試過什麼嗎?代碼在哪裏? – 2013-02-09 10:17:35

回答

1

通常的問題是,你還需要適當的GUI刷新更新進度條的值時。前段時間我使用進度條進行了異步加載,在那裏我使用了該教程。

請注意,對於壓縮音頻文件,字節計數器的使用可能不準確,最初沒有進行完整的解壓縮,可能不是您想要的。

這當然是必不可少的,您設置進度條的值和最小&最大適當地使用constructor和/或setMaximum()setMinimum()setValue(),開始玩之前,例如

progressBar.setMinimum(0); 
progressBar.setMaximum(totalTime); 
progressBar.setValue(0); 

progressBar.setValue(elapsedTime); 

從你的工作線程,使用PropertyChangeListener接口和SwingWorkersetProgress()從工人實例中,如下面的例子。 只需將代碼適應你的需求:

http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java

+0

我正在考慮使用線程監視線程---但這似乎是不可能的,因爲它需要知道線程將運行多長時間。我決定使用額外的庫來獲取Id3v2標籤---用它來查找mp3文件的長度。我將會有一個額外的線程,使用stackoverflow.com/questions/2437141/run-java-thread-at-specific-times不斷更新progressBar。 @Sam謝謝你! – Adeeb 2013-02-09 10:51:53

+0

不客氣。我建議使用該教程的代碼保持簡單,因爲它必須工作。您的實際問題似乎是檢索播放狀態。雖然Java 7有/有一些不好的安全漏洞,你會有一些不錯的FX類來播放MP3文件,它們也提供了準確的播放狀態:http://stackoverflow.com/a/10237397/1175253 – Sam 2013-02-09 11:00:18