根据进度条,再结合Timer组件,下面将列举一个实例。该实例主要是演示一个进度条的动作事件。其程序代码如下所示:
public class BWF implements ActionListener,ChangeListener{
JFrame jf=null;
JProgressBar pb;
JLabel label;
Timer timer;
JButton b;
public BWF(){
jf=new JFrame("博为峰教育");
jf.setSize(300, 200);
JPanel contentPane=new JPanel();
jf.setContentPane(contentPane);
label=new JLabel(" ",JLabel.CENTER);
pb=new JProgressBar();
pb.setOrientation(JProgressBar.HORIZONTAL);
pb.setMinimum(0);//最小刻度
pb.setMaximum(100);//最大刻度
pb.setValue(0);
pb.setStringPainted(true);
pb.addChangeListener(this);//添加进度条变化事件
pb.setPreferredSize(new Dimension(200, 300));
JPanel panel=new JPanel();
b=new JButton("开始");
b.addActionListener(this);
panel.add(b);
timer=new Timer(50, this);
contentPane.add(panel,BorderLayout.NORTH);
contentPane.add(pb,BorderLayout.CENTER);
contentPane.add(label,BorderLayout.SOUTH);
jf.setVisible(true);
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new BWF();
}
@Override
public void stateChanged(ChangeEvent e) {
int value=pb.getValue();
if(e.getSource()==pb){
label.setText("目前已完成进度:"+value+"%");
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b){//单击开始时,计时开始
timer.start();
}
if(e.getSource()==timer){
int value=pb.getValue();
if(value<100){
value++;
pb.setValue(value);
}else{
timer.stop();
pb.setValue(0);
}
}
}
}