//更新进度条的线程
class MyProgressThread extends Thread{
private ProgressMonitor monitor;
private boolean stopStatus=false;
int min=0;
int max=100;
//构造函数
public MyProgressThread(Component parent){
monitor = new ProgressMonitor(parent,"Progress of Thread","Not Started",min,max);
}
public void setStop(boolean value){
stopStatus=value;
}
public void run(){
monitor.setNote("Started");
for(int x=min;x<=max;x++){
if(stopStatus){
monitor.close();
//跳出for循环,让run方法自然结束
break;
}else{
monitor.setProgress(x);
//在进度条上显示的信息
monitor.setNote(""+x+"%");
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
}
在monitor.setProgress(x);传的参数达到设定的最大值或调用了monitor.close();对话框会自己消失。
MyProgressThreadmyThread;
private void startRunning() {
if(myThread==null||!myThread.isAlive()){
myThread=new MyProgressThread(this);
myThread.start();
}
}
private void stopRunning() {
myThread.setStop(true);
}