在java中是采取委托事件处理机制。事件源发生事件,委托给监听器处理。就好像是我把电脑弄坏了,自己不修,委托给电脑城修。
事件源:能够接收外部事件的源体。 侦听器:能够接收事件源通知的对象。 事件处理程序:用于处理事件的对象
如果有一天你走在路上一不小心被天上掉下来的花瓶砸到了,并且晕死了过去。那么整个过程其实就是一个事件处理流程,而且我们可以非常方便的分析出刚才所提到的事件驱动模型中的三大要素。
1.被砸晕的这个人其实就是事件源,因为他是能够接受到外部的事件的源体。
2.侦听器就是这个人的大脑神经,因为它会感知到疼痛。
3.事件处理就是这个人晕死了过去。
Java Swing为开发者提供了很多现成的组件,如:按钮(JButton),单选按钮(JRadioButton)等。为了管理用户与组成程序图形用户界面的组件间的交互,必须理解在Java中如何处理事件。
假设用户单击了程序图形用户界面中的一个按钮,其实该按钮就是这个事件的源(可以引发事件的物体)。所有的Java Swing对象都有感知自己被操作的能力,因此JButton按钮也具有这样能力。一个事件通常必须有一个源对象,这里就是JButton对象。当单击按钮时,JButton组件类会生成一个用于存放该事件参数的ActionEvent的对象,该对象包含了事件及事件源的信息。
当JButton感知到自己被点击以后会将这种感觉传递给某个侦听器对象,该侦听器对象原先已被告知对该类事件感兴趣,侦听器对象仅是一种侦听特定事件的对象。这里的“将事件传递给侦听器”仅意味着事件源调用侦听器对象中的一个特定方法,并以事件对象作为实参。侦听器对象可以侦听一个特定对象的事件
java委托事件模型的实现步骤
1:建立事件源对象 2:为事件源寻找合适的监听器 3:为监听器添加适当的处理程序 4:给监听器和事件源建立联系。
ActionListener接口是用得最多的,能监听点击事件,如鼠标点击,键盘和触摸
public class Task extends JFrame{
private JButton but;
public Task(){
this.setLayout(null);
but=new JButton("确定"); //事件源——确定按钮
but.setBounds(250, 180, 70, 20);
but.addActionListener(new MyTest()); //将事件传给监听器 MyTest
this.add(but);
//设置窗口的关闭方法
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口的大小
this.setSize(600,400);
//设置窗口居中
this.setLocationRelativeTo(null);
//将窗口设置为可显示
this.setVisible(true);
}
public static void main(String[] args){
new Task();
}
}
public class MyTest implements ActionListener{ //监听器,实现ActionListene接口
private int i;
@Override
public void actionPerformed(ActionEvent e) { //重写ActionListene方法
i++;
System.out.println(i); //监听器的处理方法:输出i的值
}
}