progressbardemo.java

来自「java2应用开发指南第一版」· Java 代码 · 共 84 行

JAVA
84
字号
//ProgressBarDemo.java
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class ProgressBarDemo extends JFrame
{

    protected int m_min = 0;
    protected int m_max = 100;
    protected int m_counter = 0;
    protected JProgressBar jpb;

	public ProgressBarDemo() 
	{
		super("JProgressBar Demo");
		
        jpb = new JProgressBar();
        jpb.setMinimum(m_min);
        jpb.setMaximum(m_max);
        jpb.setStringPainted(true);

        JButton start = new JButton("开始");
        //添加按钮的事件监听器
        start.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) 
          {
           	//启动一个线程
           	new UpdateThread().start();
          }
        });
        
		getContentPane().add(jpb, BorderLayout.CENTER);
        getContentPane().add(start, BorderLayout.WEST);
		
		//显示框架窗口
		setSize(300,70);
		setVisible(true);
	}

	//应用程序的入口方法
	public static void main(String args[])
	{
		 ProgressBarDemo frame=new ProgressBarDemo();
		 //添加框架窗口的事件监听(监听关闭框架窗口事件)
		 frame.addWindowListener(new WindowAdapter() {
		    public void windowClosing(WindowEvent e) {
		        //正常推出Java虚拟机
		        System.exit(0);
		    }
		});
	}
	//用于完成更新进度条的值和耗时任务的线程
	class UpdateThread extends Thread
	{
		Runnable runme;
		
		public UpdateThread()
		{
			runme=new Runnable(){
				public void run(){
					//更新进度条的值
                    jpb.setValue(m_counter);
				} 	
			};
		}
		public void run()
		{
			m_counter = m_min;
            while (m_counter <= m_max) {
              SwingUtilities.invokeLater(runme);
              m_counter++;
              try { 
                Thread.sleep(500); //睡眠0.5秒,模拟耗时任务的处理
              } 
              catch (Exception ex) {}
            }
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?