【java事件处理机制】事件源、事件(处理)对象、实现事件监听器
【java事件模型的几个步骤】1.要确定事件源是谁,比如按钮1(会触发点击事件或动作事件)2.要确定会发生什么样的事件,比如动作事件3.要实现事件监听器(大部分都是接口)。要把事件监听器对象和事件源的某个事件关联起来,这个步骤被称作注册监听,事件源被注册监听为某个监听器的子类对象来处理。
【java事件处理机制】是一种委托事件模型。就是把某个事件源委托给事件监听器的对象来处理,就是注册监听,这个监听器对象随时监听这个事件源上的特定的事件类型,一旦成功,就会自动调用事件处理程序来处理这个事件
练习一、点击按钮一,显示“你点击了按钮”对话框,点击按钮二,显示“你点击了按钮二”对话框
package org.zhaiyujia.pkg1;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class JButtonTest extends JFrame implements ActionListener{
//2.必须有一个实现子类,比如JButtonTest implements ActionListener接口3.导入ActionListener包
JPanel p=new JPanel();
JButton b1,b2;
public JButtonTest() {
b1=new JButton("按钮1");
b2=new JButton("按钮2");
this.getContentPane().add(p);//将面板添加到窗体上,默认面板铺满整个窗体
p.add(b1);//默认放在面板行居中,放不下了再放到下一行
p.add(b2);
p.setBackground(Color.red);//设置面板颜色为红色,否则看不出效果
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ActionTest at=new ActionTest();
b1.addActionListener(at);//5.这句话被叫做注册监听,把按钮b1注册为this对象
//1.因为b1是事件源,所以b1就应该去注册监听,参数应该是addActionListener(一个接口)的一个实现子类
b2.addActionListener(this);
}
public static void main(String[] args) {
new JButtonTest();
}
@Override
//事件处理程序
public void actionPerformed(ActionEvent e) {
//4.报错的原因是因为实现了ActionListener接口,就要重写这个接口中的方法actionPerformed
JButton b=(JButton)e.getSource();//getSource获取事件源
if(b==b1) {
JOptionPane.showMessageDialog(this, "你点击了按钮1");
}//6.弹出一个对话框
else {
JOptionPane.showMessageDialog(this, "你点击了按钮2");
}
}
}
class ActionTest implements ActionListener{ //现在两个类文件写到一起,但其实这样不好
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "你点击了按钮");//null代表屏幕的正中
}
}