代码1:
public class loadWindow extends JFrame implements ActionListener{
    ProgressMonitor progress;
    JButton start;
    public loadWindow(){
        start = new JButton("start");
        getContentPane().setLayout(null);
        getContentPane().add(start);
        start.setBounds(0,50,20,20);        start.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){
        progress = new ProgressMonitor(null,null,null,0,100);
                    }    public static void main(String args[]){
        loadWindow form = new loadWindow();
        form.setSize(300,300);
        form.setVisible(true);
        form.show();
    }
}为什么没有进度监视器产生?代码2:
public class loadWindow extends JFrame implements ActionListener{
    ProgressMonitor progress;
    JButton start;
    public loadWindow(){
        start = new JButton("start");
        getContentPane().setLayout(null);
        getContentPane().add(start);
        start.setBounds(0,50,20,20);
        start.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){
        progress = new ProgressMonitor(null,null,null,0,100);
        int i = 0;
         while(i<=100)
         {
             progress.setProgress(i);
             i++;
             try{
                 Thread.sleep(1000);
             }catch(Exception s){
                 s.printStackTrace();
             }
         }
            }    public static void main(String args[]){
        loadWindow form = new loadWindow();
        form.setSize(300,300);
        form.setVisible(true);
        form.show();
    }
}
为什么此时显示的进度监视器是白色的,没有进度填充色出现,而且第二次按下start按钮是,没有产生进度监视器。

解决方案 »

  1.   

    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.ProgressMonitor;public class T extends JFrame implements ActionListener {
    ProgressMonitor progress; JButton start; public T() {
    start = new JButton("start");
    getContentPane().setLayout(new FlowLayout());
    getContentPane().add(start);
    start.addActionListener(this);
    } public void actionPerformed(ActionEvent e) {
    start.setEnabled(false);
    progress = new ProgressMonitor(this, "Process started.", "", 0, 100);

    new Thread() {
    public void run() {
    int i = 0;
    while (i <= 100) {
    if (progress.isCanceled()) {
    System.out.println("Canceled");
    start.setEnabled(true);
    return;
    } progress.setProgress(i);
    progress.setNote(i + "%");
    i++;
    try {
    Thread.sleep(100);
    } catch (Exception s) {
    s.printStackTrace();
    }
    }

    start.setEnabled(true);
    System.out.println("Finished");
    }
    }.start();
    } public static void main(String args[]) {
    T form = new T();
    form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    form.setSize(300, 300);
    form.setLocationRelativeTo(null);
    form.setVisible(true);
    form.show();
    }
    }