java 进度条应用

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class JBTest extends JFrame implements ActionListener,ChangeListener{
 JProgressBar jpb;
 JLabel jl;
 Timer time;
 JButton jb;
 JPanel jp1;
 

 /**
  * @param args
  */
 public static void main(String[] args) {
  JBTest jb=new JBTest();

 }
 
 public JBTest(){
  
  jb=new JButton("运行");
  jb.addActionListener(this);
  jl=new JLabel("请点击运行按钮", JLabel.CENTER);
  time=new Timer(100,this);//创建一个 Timer 并将初始延迟和事件间延迟初始化为100毫秒
  
  jpb=new JProgressBar();
  jpb.setOrientation(JProgressBar.HORIZONTAL);//设置进度条方向为水平放置
  jpb.setMaximum(0);//进度条最小值
  jpb.setMaximum(100);//进度条最大值
  jpb.setValue(0);//设置进度条当前值
  //jpb.setStringPainted(true);//确定进度条是否应该呈现进度字符串
  jpb.addChangeListener(this);
  jpb.setPreferredSize(new Dimension(300, 20));
  jpb.setBorderPainted(true);//设置进度条边框
  jpb.setBackground(Color.white);
  
  jp1=new JPanel();
  jp1.add(jb);
  
  
  //添加组件在面板中的位置
  this.add(jpb,"North");
  this.add(jl,"Center");
  this.add(jp1,"South");
  
  this.setTitle("进度条示例");
  this.setSize(300,110);
  this.setLocation(100,100);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //设置窗口不可调整大小
  this.setResizable(false);
  this.setVisible(true);
  
 }

 @Override
 public void actionPerformed(ActionEvent e) {
  if (e.getSource()==jb){
   time.start();
  }
  else if(e.getSource()==time){
   int v=jpb.getValue();
   if (v<100){
    jpb.setValue(++v);
   }else{
    time.stop();
    jl.setText("加载完成");
   }
   
  }
  
 }
 
 public void stateChanged(ChangeEvent e1){
  int v=jpb.getValue();
  if (e1.getSource()==jpb){
   jl.setText("进度条进度为:"+Integer.toString(v)+"%");
   jl.setForeground(Color.blue);
  }
 }

}

代码参考:http://blog.163.com/light_warm/blog/static/3168104201063055844587/

posted @ 2015-11-21 23:56  kennyhip  阅读(443)  评论(0)    收藏  举报