我試圖實現自動滾動進度條。問題是,我無法阻止它開始。但是在逐步調試期間,並且僅在調試期間,它工作正常。運行期間無法停止線程,但正在調試
這是我的代碼片段。任何幫助將不勝感激。
package test;
import javax.swing.*;
public final class MyTest{
private boolean isvisible = false;
private JProgressBar progressbar = new JProgressBar();
/**
* thread of automatic rolling progress-bar
*/
private Thread proT = new Thread(new Runnable(){
@Override
public void run(){
isvisible = true;
progressbar.setVisible(true);
while(true){
progressBar.setValue((progressBar.getValue() + 20)%100);
System.out.println(progressBar.getValue());
try{
Thread.sleep(500);
}catch(InterruptedException e){
e.printStackTrace();
}
if(!isvisible){
progressbar.setVisible(false);
break;
}
}
}
});
/**
* constructor
*/
public MyTest(){
//initiate GUI
}
/**
* show an automatic rolling progress-bar
*/
public void showProgressBar(){
proT.start();
}
/**
* stop/veil the progress-bar
*/
public void veilProgressBar(){
isvisible = false;
}
}
爲了儘快獲得更好的幫助,請發佈[MCTaRE](http://stackoverflow.com/help/mcve)(最小完整測試和可讀示例)。 –
注意:GUI更新應在EDT上執行,而我們絕不應導致EDT休眠。有關更多詳細信息,請參見[Swing中的併發](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 –
你是如何阻止它的? –