下面总结一下关于JAVA事件处理机制。
JAVA是通过授权处理机制来对事件进行处理,那么授权处理机制是什么意思呢?
一、首先要理解几个重要的概念:
1、事件源。能够产生事件的对象都称为事件源,也就是JAVA认为能够发生事件的对象。如按钮(JButton button)、文本区(JTextArea textarea)、下拉式列表等。
2、事件。事件源能产生特定的事件,如按钮会产生ActionEvent事件等。JAVA定义了很多种事件,命名为XXXEvent。其实所谓的事件就是我们在界面上对组件的处理。
3、监视器。监视器用来对事件源进行监听,以便对事件源发生的事件做出处理。什么是监视器呢?只要一个对象(实际上这里是一个类)实现了监视器接口就能成为监视器。例如事件源所在的容器对象(类),或者其他任何对象(类),一旦实现了事件监视器接口,该类就会自动增加一个事件处理方法,然后我们把事件处理的代码加入其中就可以了。
事件源发生事件以后,监视器代替事件源对发生的事件进行处理,这就是JAVA事件授权处理机制。
JAVA事件处理过程如下
当事件源发生事件时,监视器会自动调用被实现的接口方法,对事件处理的代码就可以放置在该方法中。
二、常用组件(就是应用程序界面我们看到的组成元素,例如按钮、菜单、下拉列表等)事件处理
1、事件源:JButton(单击)
事件 :ActionEvent事件
监视器接口:ActionListener
接口方法:void actionPerformed(ActionEvent e)
事件源对象添加监视器对象方法:事件源对象.addActionListener(监视器对象)
2、事件源:JTextArea
事件 :DocumentEvent事件
监视器接口:DocumentListener
接口方法:void changedUpdate(DocumentEvent e)
void insertUpdate(DocumentEvent e)
void removeUpdate(DocumentEvent e)
事件源对象添加监视器对象方法:事件源对象.getDocument.addDocumentListener(监视器对象)
3、事件源:JRadioButton
事件 :ItemEvent事件
监视器接口:ItemListener
接口方法:void itemStateChanged(ItemEvent e)
事件源对象添加监视器对象方法:事件源对象.addItemListener(监视器对象)
4、事件源:JTree
事件 :TreeSelectionEvent事件
监视器接口:TreeSelectionListener
接口方法:void valueChanged(TreeSelctionEvent e)
事件源对象添加监视器对象方法:事件源对象.addTreeSelectionListener(监视器对象)
三、鼠标事件处理
当鼠标进入/退出组件、在组件上单击及拖动鼠标时,会发生鼠标事件。上面的事件处理适用于特定的组件,而该事件处理在任何组件上都可以发生,即事件源可以是任何组件,只要添加监视器对象即可。
事件源:任何组件
事件 :MouseEvent事件
监视器接口:MouseListener
接口方法:mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
mouseEntered(MouseEvent e)
mouseExited(MouseEvent e)
mouseClicked(MouseEvent e)
事件源对象添加监视器对象方法:事件源对象.addMouseListener(监视器对象)
另外,当在事件源上拖动鼠标指针或者在事件源上移动鼠标指针时,可以通过MouseMotionListener接口来对事件进行处理。
事件:MouseEvent
接口:MouseMotionListener
接口方法:mouseDragged(MouseEvent)
mouseMoved(MouseEvent)
添加监视器:事件源.addMouseMotionListener(监视器对象)。
四、键盘事件处理
键盘事件发生在按下、释放或者敲击键盘时。当一个组件处于激活状态时,敲击键盘上的键就发生键盘事件。
事件:KeyEvent事件
接口:KeyListener
接口方法:void keyPressed(KeyEvent e)
void keyTyped(KeyEvent e)
void keyReleased(KeyEvent e)
添加监视器:事件源.addKeyListener(监视器对象)
五、窗体事件
Window类子类所创建的对象都可以发生WindowEvent类型窗体事件。当一个窗体被激活、撤销激活、打开、关闭或撤销图标化时,就会发生窗体事件。
事件源:JFrame
事件:WindowEvent事件
监视器接口:WindowListener
添加监视器:事件源.addWindowListener(监视器对象)