ChangeEvent在组件值改变的时候会触发,比如说进度条的值改变。
关于ChangeEvent的一些信息:
事件名称:ChangeEvent
事件监听接口:ChangeListener 继承这个接口的类(监听者)需要重写stateChanged(ChangeEvent e1) 方法
事件相关方法:addChangeListener(),添加事件监听者。
需要导入的类:
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
下面通过一个实例具体说明
基本步骤:
1.创建监听者,继承ChangeListener接口,重写stateChanged方法
2.创建进度条,将监听者添加到进度条
3.通过for循环来不断改变进度条的值,以引发 监听者
代码如下:
1.创建监听者,继承ChangeListener接口,重写stateChanged方法
class mychangelistener implements ChangeListener
{
//重写的stateChanged方法的功能是当事件触发时,通过标签显示进度条的进度
@Override
public void stateChanged(ChangeEvent e1)
{
if(e1.getSource() == jprogressBar1)//判断是否由jprogressBar1进度条引发的
{
int value = jprogressBar1.getValue();//获取进度条的值
jlabel1.setText("当前进度已完成: " + value + " %");//通过标签显示当前进度
}
}
}
2.创建进度条,将监听者添加到进度条
JProgressBar jprogressBar1 = new JProgressBar(); //进度条
jprogressBar1.addChangeListener(new mychangelistener()); //添加监听者
3.通过for循环来不断改变进度条的值,以引发 监听者
try
{
int i = 0;
for(; i <= 100; i++) //从0到100
{
jprogressBar1.setValue(i); //设置进度条的当前值
Thread.sleep(50); //堵塞50毫秒
}
} catch (InterruptedException e) {}
完整代码:
import javax.swing.JFrame; //顶层容器
import javax.swing.JPanel; //中间容器
import javax.swing.JLabel; //标签
import javax.swing.JProgressBar; //进度条
import javax.swing.event.ChangeEvent; //改变事件
import javax.swing.event.ChangeListener;
public class text_ChangeEvent
public static void main(String[] args)
{
JFrame jframe = new JFrame("改变监听者");//窗口
jframe.setSize(250, 250); //设置窗口大小
JPanel jpanel1 = new JPanel(); //面板
JProgressBar jprogressBar1 = new JProgressBar(0,100); //进度条
JLabel jlabel1 = new JLabel(); //标签
class mychangelistener implements ChangeListener
{
//重写的stateChanged方法的功能是当事件触发时,通过标签显示进度条的进度
@Override
public void stateChanged(ChangeEvent e1)
{
if(e1.getSource() == jprogressBar1)//判断是否由jprogressBar1进度条引发的
{
int value = jprogressBar1.getValue();//获取进度条的值
jlabel1.setText("当前进度已完成: " + value + " %");//通过标签显示当前进度
}
}
}
jpanel1.add(jprogressBar1);
jpanel1.add(jlabel1);
jframe.add(jpanel1);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
jframe.setVisible(true); //设置可见
jprogressBar1.addChangeListener(new mychangelistener()); //添加监听者
try
{
int i = 0;
for(; i <= 100; i++) //从0到100
{
jprogressBar1.setValue(i); //设置进度条的当前值
Thread.sleep(50); //堵塞50毫秒
}
} catch (InterruptedException e) {}
}
}
最后的运行结果: