java实现监视任务的进度条
import java.awt.event.*;
import javax.swing.*;
public class ProgressBar {
public static void main(String[] args) {
JFrame f = new JFrame ();
final ProgressMonitor monitor = new ProgressMonitor(f,"任务完成
状态" , "" , 0 , 100) ;
monitor.setProgress(0);
JButton b = new JButton("启动进度条");
f.add(b);
b.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
ProgressTask task = new ProgressTask (monitor);
task.start();
}
});
f.setSize(500,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent e) {
System.exit(0);
}
});
}
static class ProgressTask implements Runnable {
private boolean running ;
private Thread t ;
private ProgressMonitor monitor ;
private int value ;
public ProgressTask(ProgressMonitor monitor) {
this.monitor = monitor ;
running = false ;
}
public void run() {
while (running) {
try{
Thread.sleep(200);
if (monitor.isCanceled()) {
running = false ;
}
monitor.setProgress(++value);
monitor.setNote(value + "%");
if(value >= 100) {
running = false ;
}
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
public void start () {
if (!running) {
value = 0 ;
monitor.setProgress(value) ;
running = true ;
t = new Thread (this) ;
t.start();
}
}
}
}