《ch12_AWT-事件处理模型课件》由会员分享,可在线阅读,更多相关《ch12_AWT-事件处理模型课件(29页珍藏版)》请在金锄头文库上搜索。
1、AWT 事件处理模型什么叫事件nEvent事件,就是发生在用户界面上的用户交互行为所产生的一种效果。nEvent Source产生事件的对象。nEvent handler接收事件对象并对其进行处理的方法。事件处理模型nHierachical model(JDK 1.0)事件传递机制。nDelegation model(JDK 1.1, 1.2)授权处理机制。Delegation Modeln将事件源对象和事件处理器(事件监听器)分开。import java.awt.*;import java.awt.event.*;public class TestButton public static v
2、oid main(String args)Frame f = new Frame(Test);Button b = new Button(Press Me!);b.addActionListener(new ButtonHandler();f.setLayout(new FlowLayout();f.add(b);f.setSize(200,100);f.setVisible(true); class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e)System.out.prin
3、tln(Action occurred);n使用JDK1.1授权处理模型进行事件处理的一般方法:q对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现针对特定事件的特定接口XXXListener;q事件源中产生事件后,必须注册相应于该类事件的监听器,使用addXXXListener(XXXListener )方法来注册监听器。njava.util.EventObject类EventObject类是所有事件对象的基础类,所有的事件类都是由它派生出来的。public class EventObject implements java.io.Seria
4、lizable protected transient Object source; public EventObject(Object source); public Object getSource(); public String toString();njava.awt.AWTEvent和AWT有关的所有事件类都由java.awt.AWTEvent类派生 ,AWT事件共有10类,可以归为两大类:低级事件和高级事件。n低级事件qComponentEvent(组件事件:组件尺寸的变化,移动)qContainerEvent(容器事件:组件增加,移动)qWindowEvent(窗口事件:关闭窗
5、口,窗口闭合,图标化)qFocusEvent(焦点事件:焦点的获得和丢失)qKeyEvent(键盘事件:键按下、释放)qMouseEvent(鼠标事件:鼠标单击,移动)n高级事件(语义事件)qActionEvent(动作事件:按钮按下,TextField中按Enter键)qAdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值)qItemEvent(项目事件:选择项目,不选择项目)qTextEvent(文本事件,文本对象改变)AWT事件及其相应的监听器接口nActionEventq激活组件qActionListenerqactionPerformed(ActionEvent)n
6、ItemEventq选择了某些项目qItemListenerqitemStateChanged(ItemEvent)nMouseEventq鼠标移动qMouseMotionListenerqmouseDragged(MouseEvent)mouseMoved(MouseEvent)nMouseEventq鼠标点击等qMouseListenerqmousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent)nKe
7、yEventq键盘输入qKeyListenerqkeyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent)nFocusEventq组件收到或失去焦点qFocusListenerqfocusGained(FocusEvent)focusLost(focusEvent)nAdjustementEventq移动了滚动条等组件qAdjustmentListenerqadjustmentValueChanged(AdjustmentEvent)nComponentEventq对象移动缩放显示隐藏等qComponentListenerqcom
8、ponentMoved(ComponentEvent)componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)nWindowEventq窗口收到窗口级事件qWindowListenerqwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowAc
9、tivated(WindowEvent)windowDeactivated(WindowEvent)nContainerEventq容器中增加删除了组件qContainerListenerqcomponentAdded(containerEvent)componentRemoved(containerEvent)nTextEventq文本字段或文本区发生改变qTextListenerqtextValueChanged(TextEvent)事件处理举例import java.awt.*;import java.awt.event.*;public class TwoListen implemen
10、tsMouseMotionListener,MouseListener,WindowListener private Frame f;private TextField tf;public static void main(String args)TwoListen two = new TwoListen();two.go();public void go() f = new Frame(Two listeners example);f.add(new Label(Click and drag the mouse),North);tf = new TextField(30);f.add(tf,
11、South);f.addMouseMotionListener(this);f.addMouseListener(this);f.addWindowListener(this);f.setSize(300,200);f.setVisible(true);public void mouseDragged (MouseEvent e) String s = Mouse dragging : X=+e.getX()+Y = +e.getY();tf.setText(s); public void mouseMoved(MouseEvent e) public void mouseClicked(Mo
12、useEvent e) public void mouseEntered(MouseEvent e)String s = The mouse entered;tf.setText(s); public void mouseExited(MouseEvent e)String s = The mouse has left the building;tf.setText(s); public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)public void windowClosing(WindowEv
13、ent e) System.exit(1);public void windowOpened(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowClosed(WindowEvent e) public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) n事件适配器(Event Adapters)qComponentAdapter(组件适配器)qContainerAdapter(容器适配器)qFocusAdapter(焦点适配器)qKeyAdapter(键盘适配器)qMouseAdapter(鼠标适配器)qMouseMotionAdapter(鼠标运动适配器)qWindowAdapter(窗口适配器)