标签:事件处理 frame AWT06 事件 监听器 组件 new public
在AWT中,用户的所有操作都要由事件处理来完成。Frame和组件本身没有处理事件的能力。
1.GUI事件处理机制
定义:在某个组件上发生某种操作时,自动触发某段代码。
事件处理涉及4个重要概念:
事件源(Event Source):操作发生的场所,通常指某个组件。
事件(Event):在事件源发生的某种操作,GUI将事件封装在Event对象中,如果想知道具体的事件信息,就要通过Event对象来获取。
事件监听器(Event Listener):当在事件源上发生了某个事件时,事件监听器可以对其进行处理。
事件监听:将事件监听器通过事件绑定在事件源上,当发生了某个事件时事件监听器可以对其进行处理。
使用步骤:
1.创建事件源
2.自定义类,实现XXXListener接口,重写方法。
3.创建事件监听器对象(自定义类对象)。
4.调用事件源组件的addXXXListener方法完成绑定。
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 6 public class EventTestDemo { 7 Frame frame = new Frame("测试事件监听"); 8 9 TextField tf = new TextField(30); 10 11 Button submit = new Button("Submit"); 12 13 Box box = Box.createVerticalBox(); 14 public void init(){ 15 box.add(tf); 16 box.add(submit); 17 18 submit.addActionListener(new ActionListener() { 19 @Override 20 public void actionPerformed(ActionEvent e) { 21 tf.setText("你好世界"); 22 } 23 }); 24 25 frame.add(box); 26 27 frame.pack(); 28 frame.setVisible(true); 29 } 30 31 public static void main(String[] args) { 32 new EventTestDemo().init(); 33 } 34 }
2.常见事件和事件监听器
事件监听器必须实现事件监听器接口,AWT提供了大量的事件监听器接口用于实现不同类型的事件监听器,监听不同类型的事件。
AWT的事件类都是AWTEvent的子类,而AWTEvent是EventObject的子类。
2.1 事件
AWT把事件分为了两大类:低级事件和高级事件。
低级事件:
基于某个特定动作的事件,比如点击、进入、拖放等鼠标动作的事件或者获得焦点、失去焦点等事件。
方法名 | 说明 |
ComponentEvent | 组件事件,当组件的尺寸、位置、可见性发生变化时,触发该事件。 |
ContainerEvent | 容器事件,当容器内增删组件时,触发该事件。 |
WindowEvent | 窗口事件,当窗口状态发生改变时(如打开关闭、最小化、最大化),触发该事件。 |
FocusEvent | 焦点事件,当组件得到焦点或者失去焦点时,触发该事件。 |
KeyEvent | 键盘事件,当键盘被按下、松开或者单击时,触发该事件。 |
MouseEvent | 鼠标事件,当鼠标被按下、松开、单击或者移动的时候,触发该事件。 |
PaintEvent | 组件绘制事件,该事件是一个特殊的事件类型,当GUI组件调用update/paint方法来呈现自身时,触发该事件,该事件并非专用于事件处理模型。 |
高级事件:
该类事件并不基于某个特定动作,而是根据功能含义定义的事件。
方法名 | 说明 |
ActionEvent | 动作事件,当按钮、菜单项被单击,在TextField中按Entry时被触发。 |
AjustmentEvent | 调节事件,在滑动条上移动滑块以调节数值时触发。 |
ItemEvent | 选项事件,当用户选中某项或者取消选中某项时触发。 |
TextEvent | 文本事件,当文本框、文本域中的文本发生变化时触发。 |
2.2 事件监听器
不同的事件要使用不同的事件监听器来监听,不同的事件监听器要实现不同的事件监听器接口,当指定事件发生后,事件监听器就会调用写好的事件监听方法来处理。
事件类别 | 描述信息 | 监听器接口名 |
ActionEvent | 激活组件 | ActionListener |
ItemEvent | 选中了某选项 | ItemListener |
MouseEvent | 鼠标移动 | MouseMotionListener |
MouseEvent | 鼠标点击等 | MouseListener |
KeyEvent | 键盘输入 | KeyListener |
FocusEvent | 组件收到焦点或者失去焦点 | FocusListener |
AjustmentEvent | 移动了滚动条等组件 | AjustmentListener |
ComponentEvent | 对象移动缩放显示隐藏等 | ComponentListener |
WindowEvent | 窗口收到窗口级事件 | WindowListener |
ContainerEvent | 容器中增删组件 | ContainerListener |
TextEvent | 文本框或者文本域中的文本发生变化 | TextListener |
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 public class ListenerTestDemo { 6 Frame frame = new Frame("事件监听器测试"); 7 8 Box box = Box.createHorizontalBox(); 9 10 Choice select = new Choice(); 11 12 TextField tf = new TextField(30); 13 14 public void init(){ 15 select.add("超人"); 16 select.add("蝙蝠侠"); 17 select.add("钢铁侠"); 18 19 box.add(select); 20 box.add(tf); 21 22 frame.add(box); 23 24 frame.setLocation(500,250); 25 26 frame.pack(); 27 28 frame.setVisible(true); 29 30 tf.addTextListener(new TextListener() { 31 @Override 32 public void textValueChanged(TextEvent e) { 33 String selectedItem = select.getSelectedItem(); 34 String text = tf.getText(); 35 System.out.println(selectedItem+text); 36 } 37 }); 38 39 tf.addActionListener(new ActionListener() { 40 @Override 41 public void actionPerformed(ActionEvent e) { 42 String selectedItem = select.getSelectedItem(); 43 String text = tf.getText(); 44 System.out.println(selectedItem+text); 45 } 46 }); 47 48 frame.addWindowListener(new WindowAdapter() { 49 @Override 50 public void windowClosing(WindowEvent e) { 51 System.exit(0); 52 } 53 }); 54 55 56 } 57 public static void main(String[] args) { 58 new ListenerTestDemo().init(); 59 } 60 }
标签:事件处理,frame,AWT06,事件,监听器,组件,new,public 来源: https://www.cnblogs.com/zhiyDev/p/14100997.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。