每隔一秒钟,进度条的使用
java 代码
- package example;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Container;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseMotionAdapter;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JProgressBar;
- import javax.swing.Timer;
- public class GlassExample extends JFrame {
- JPanel glass = new JPanel(new GridLayout(0, 1));
- JProgressBar waiter = new JProgressBar(0, 100);
- Timer timer;
- public GlassExample( ) {
- super("GlassPane Demo");
- setSize(500, 300);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- // Set up the glass pane with a little message and a progress bar.
- JPanel controlPane = new JPanel(new GridLayout(2,1));
- controlPane.setOpaque(false);
- controlPane.add(new JLabel("Please wait..."));
- controlPane.add(waiter);
- glass.setOpaque(false);
- glass.add(new JLabel( )); // Padding...
- glass.add(new JLabel( ));
- glass.add(controlPane);
- glass.add(new JLabel( ));
- glass.add(new JLabel( ));
- glass.addMouseListener(new MouseAdapter( ) {});
- glass.addMouseMotionListener(new MouseMotionAdapter( ) {});
- setGlassPane(glass);
- // Now set up a few buttons and images for the main application.
- JPanel mainPane = new JPanel( );
- mainPane.setBackground(Color.white);
- JButton redB = new JButton("Red");
- JButton blueB = new JButton("Blue");
- JButton greenB = new JButton("Green");
- mainPane.add(redB);
- mainPane.add(greenB);
- mainPane.add(blueB);
- mainPane.add(new JLabel(new ImageIcon("oreilly.gif")));
- // Attach the pop-up debugger to the main app buttons so you
- // see the effect of making a glass pane visible.
- PopupDebugger pd = new PopupDebugger(this);
- redB.addActionListener(pd);
- greenB.addActionListener(pd);
- blueB.addActionListener(pd);
- // And last but not least, our button to launch the glass pane
- JButton startB = new JButton("Start the big operation!");
- startB.addActionListener(new ActionListener( ) {
- public void actionPerformed(java.awt.event.ActionEvent A) {
- glass.setVisible(true);
- startTimer( );
- }
- });
- Container contentPane = getContentPane( );
- contentPane.add(mainPane, BorderLayout.CENTER);
- contentPane.add(startB, BorderLayout.SOUTH);
- }
- // A quick method to start up a 10-second timer and update the progress bar
- public void startTimer( ) {
- if (timer == null) {
- timer = new Timer(1000, new ActionListener( ) {
- int progress = 0;
- public void actionPerformed(ActionEvent A) {
- progress += 1;
- waiter.setValue(progress);
- // Once we hit 100%, remove the glass pane and reset the progress bar
- // stuff.
- if (progress >= 100) {
- progress = 0;
- timer.stop( );
- glass.setVisible(false);
- waiter.setValue(0);
- }
- }
- });
- }
- if (timer.isRunning( )) {
- timer.stop( );
- }
- timer.start( );
- }
- // A graphical debugger that pops up whenever a button is pressed
- public class PopupDebugger implements ActionListener {
- private JFrame parent;
- public PopupDebugger(JFrame f) {
- parent = f;
- }
- public void actionPerformed(ActionEvent ae) {
- JOptionPane.showMessageDialog(parent, ae.getActionCommand( ));
- }
- }
- public static void main(String[] args) {
- GlassExample ge = new GlassExample( );
- ge.setVisible(true);
- }
- }