博为峰小博老师:
根据进度条,再结合Timer组件,下面将列举一个实例。该实例主要是演示一个进度条的动作事件。其程序代码如下所示:
publicclassBWFimplementsActionListener,ChangeListener{
JFramejf=null;
JProgressBarpb;
JLabellabel;
Timertimer;
JButtonb;
publicBWF(){
jf=newJFrame("博为峰教育");
jf.setSize(300, 200);
JPanelcontentPane=newJPanel();
jf.setContentPane(contentPane);
label=newJLabel(" ",JLabel.CENTER);
pb=newJProgressBar();
pb.setOrientation(JProgressBar.HORIZONTAL);
pb.setMinimum(0);//最小刻度
pb.setMaximum(100);//最大刻度
pb.setValue(0);
pb.setStringPainted(true);
pb.addChangeListener(this);//添加进度条变化事件
pb.setPreferredSize(newDimension(200, 300));
JPanelpanel=newJPanel();
b=newJButton("开始");
b.addActionListener(this);
panel.add(b);
timer=newTimer(50,this);
contentPane.add(panel,BorderLayout.NORTH);
contentPane.add(pb,BorderLayout.CENTER);
contentPane.add(label,BorderLayout.SOUTH);
jf.setVisible(true);
jf.addWindowListener(newWindowAdapter() {
publicvoidwindowClosing(WindowEvente) {
System.exit(0);
}
});
}
publicstaticvoidmain(String[]args) {
newBWF();
}
@Override
publicvoidstateChanged(ChangeEvente) {
intvalue=pb.getValue();
if(e.getSource()==pb){
label.setText("目前已完成进度:"+value+"%");
}
}
@Override
publicvoidactionPerformed(ActionEvente) {
if(e.getSource()==b){//单击开始时,计时开始
timer.start();
}
if(e.getSource()==timer){
intvalue=pb.getValue();
if(value<100){
value++;
pb.setValue(value);
}else{
timer.stop();
pb.setValue(0);
}
}
}
}