Java核心技术(事件处理)

来源:互联网 发布:培训班程序员工资 编辑:程序博客网 时间:2024/06/06 18:06

事件处理基础

任何支持GUI的操作环境都要不断地监视敲击键盘或点击鼠标这样的事件。操作环境将这些事件报告给正在运行的应用程序。如果有事件

生,每个应用程序将决定如何对他们做出响应。在AWT所知的事件范围内,完全可以控制事件从事件源到事件监听器的传递过程,并将任何

对象指派给事件监听器。事件源有一些向其注册事件监听器的方法。当某个事件源产生事件时,事件源会向为事件注册的所有事件监听器对象

发送一个通告。在Java中,所有的事件对象都最终派生于java.util.EventObject类。不同的事件源可以产生不同类别的事件。

AWT事件处理机制概要:

*监听器对象是一个实现了特定监听器接口的类的实例。

*事件源是一个能够注册监听器对象并发送事件对象的对象。

*当事件发生时,事件源将事件对象传递给所有注册的监听器。

*监听器对象将利用事件对象中的信息决定如何对事件作出响应。

动作

Action接口可以封装命令,并将它们连接到多个事件源。AbstractAction类实现了除了actionPerformed方法外的所有方法。为了将

动作与击键关联起来,首先需要生成KeyStroke类对象。KeyStroke类对象封装了对键的说明通过调用getKeyStroke方法来构造

KeyStroke。

每个JComponent由三个输入映射,每一个映射的KeyStroke对象都与动作关联:

*WHEN_FOCUSED:当这个组件用友键盘焦点时

*WHEN_ANCESTOR_OF_FOCUSED_COMPONENT:当这个组件包含了拥有键盘焦点的组件时

*WHEN_IN_FOCUSED_WINDOW:当这个组件被包含在一个拥有键盘焦点组件的窗口中时

InputMap不能直接地将KeyStroke对象映射到Action对象,而是先映射到任意对象上,然后由ActionMap类实现将对象映射到动作上

第二个映射。

鼠标事件

当用户点击鼠标按钮时,将会调用三个监听器方法:鼠标第一次被按下时调用mousePressed;鼠标被释放时调用mouseReleased;

最后调用mouseClicked。getModifiersEx法能准确地报告鼠标事件的鼠标按钮和键盘修饰符。

 

下面代码实现了Swing程序的不同外观,同时支持键盘事件响应(1234Esc)

 

原创粉丝点击