事件——让图形界面动起来
程序员文章站
2022-05-23 20:34:25
...
为了让图形界面变得有意义,则必须加入事件处理。事件类都继承了EventObject类。为了能跟踪事件源,EventObject类提供了getSource()方法来返回触发事件的对象。事件处理主要有三个部分:
事件源
1.只有Swing和awt的图形界面组件才能成为事件源对象。
2.事件发生的地方,动作发生在哪一个组件上,那么该组件就是事件源对象。
事件监听器方法
addActionListener(ActionListener l);
类似按钮上的鼠标点击或者输入框中的回车
addMouseListener(MouseListener l);
在事件源上发生鼠标按下,释放,单击,进入,离开操作时
事件接口(事件处理者)
定义类去实现ActionListener接口
定义类去实现MouseListener接口
注:对每个事件接口必须实现其所有的抽象方法。
举例:事件监听接口(MouseListener)中的抽象方法
public void mouseClicked(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
事件适配器
监听器是一个对象,进行事件处理需要自动调用一个方法,为此创建该监听器的类需要实现相应接口中的所有方法。但是,通常每个组件需要的仅仅是接口中的个别方法。因此,为了使事件处理变得简单,Java为具有多个方法的监听器提供了对应的适配器(adapter)类。这个类的基本作用是屏蔽了事件监听器接口,是处理事件的类不必再实现事件监听器接口中的全部抽象方法。但是,处理事件的类只能继承一个事件适配器。因此,需要多个事件监听器时,可以自己定义一个事件适配器。
事件源
1.只有Swing和awt的图形界面组件才能成为事件源对象。
2.事件发生的地方,动作发生在哪一个组件上,那么该组件就是事件源对象。
事件监听器方法
addActionListener(ActionListener l);
类似按钮上的鼠标点击或者输入框中的回车
addMouseListener(MouseListener l);
在事件源上发生鼠标按下,释放,单击,进入,离开操作时
事件接口(事件处理者)
定义类去实现ActionListener接口
定义类去实现MouseListener接口
注:对每个事件接口必须实现其所有的抽象方法。
举例:事件监听接口(MouseListener)中的抽象方法
public void mouseClicked(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
事件适配器
监听器是一个对象,进行事件处理需要自动调用一个方法,为此创建该监听器的类需要实现相应接口中的所有方法。但是,通常每个组件需要的仅仅是接口中的个别方法。因此,为了使事件处理变得简单,Java为具有多个方法的监听器提供了对应的适配器(adapter)类。这个类的基本作用是屏蔽了事件监听器接口,是处理事件的类不必再实现事件监听器接口中的全部抽象方法。但是,处理事件的类只能继承一个事件适配器。因此,需要多个事件监听器时,可以自己定义一个事件适配器。
class MyMouseMotionHandle extends JFrame{ public MyMouseMotionHandle(){ super.setTitle("Welcome To MLDN") ; super.addMouseMotionListener(new MouseMotionAdapter(){ public void mouseDragged(MouseEvent e){ System.out.println("鼠标拖拽到:X = " + e.getX() + ",Y = " + e.getY()) ; } }) ; super.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(1) ; } }) ; // 加入事件 super.setSize(310,210) ; super.setVisible(true) ; } };
上一篇: HTML5的音频和视频监听器应用
下一篇: 关于JDK和cglib的代码详解