1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
   | package test;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
 
public class TestProgressBar extends JFrame implements ActionListener {
  private JProgressBar jpb;
  private JButton b1;
 
  public TestProgressBar() {
    super();
    jpb = new JProgressBar(0, 100);
    b1 = new JButton("Start");
    b1.addActionListener(this);
    JPanel buttonPanel = new JPanel();
    buttonPanel.add(b1);
    setLayout(new BorderLayout());
    add(buttonPanel, BorderLayout.WEST);
    add(jpb, BorderLayout.SOUTH);
  }
 
  public static void main(String ...args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        TestProgressBar dialog = new TestProgressBar();
        dialog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        dialog.setVisible(true);
        dialog.pack();
      }
    });
  }
 
  public void refreshProgress(JProgressBar jpb) {
    try {
      for (int i = 0; i < 100; i++) {
        jpb.setValue(i);
        jpb.repaint();
        Thread.sleep(100);
      }
    }
    catch (InterruptedException e) {
      e.printStackTrace();
    }
    finally {
      b1.setEnabled(true);
    }
  }
 
  /** {@inheritDoc}
   */
  public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource();
    if (source == b1) {
      b1.setEnabled(false);
      jpb.setValue(0);
      /*Thread JProgressBar*/
      Thread runner = new Thread(new Runnable() {
        /** {@inheritDoc}
         */
        public void run() {
          refreshProgress(jpb);
        }
      });
      runner.setPriority(Thread.NORM_PRIORITY);
      runner.start();
    }
  }
} | 
Partager