目录
一、事件的概念
在前面我们写的一些界面,点击按钮并没有发生我们想要的效果,这是因为我们并未对其添加所谓的事件。那到底什么是事件呢?事件就是当在某个组件上发生某些操作的时候,会自动触发一段代码的执行
二、事件机制
低级事件 ComponentEvent 组件事件,当组件尺寸发生变化,位置移动。 显示/隐藏状态发生改变时触发该事件 ContainerEvent 容器事件。当容器1里发生添加组件,删除组件 时触发该事件 WindowEvent 窗口事件,当窗口状态发生改变(如打开,关 闭,最大化,最小化)时触发该事件 FocusEvent 焦点事件,当组件得到焦点或失去焦点时触发 该事件 KeyEvent 键盘事件,当键盘被按下,松开,单击时触发 该事件 MouseEvent 鼠标事件,当进行单击,按下,松开,移动鼠 标等动作时触发该事件 PaintEvent 组件绘制事件,该事件是一个特殊的事件类型 ,当GUI组件调用update/paint方法来呈现自身 时触发该事件,该事件并非专用于事件处理模 型 高级事件 ActionEvent 动作事件,当按钮,菜单项被单击,在TextField中 按Enter键时触发 Ajustment 调节事件,在滑动条上移动滑块以调节数值触发该 事件 ItemEvent 选项事件,当用户选中某项,或取消选中某项时触 发该事件 TextEvent 文本事件,当文本框,文本域里的文本发生改变时 触发该事件 事件监听器 不同的事件需要使用不同的监听器监听,不同的监听器需要实现不同的监听器接口,当指定事件发生后,事件监听器就会调用所包含的事件处理器(实例方法)来处理事件 事件类别 描述信息 监听器接口名 ActionEvent 激活组件 ActionListener ItemEvent 选择了某些项目 ItemListener MouseEvent 鼠标移动 MouseMotionListener MouseEvent 鼠标点击等 MouseListener KeyEvent 键盘输入 KeyListener FocusEvent 组件收到或失去焦点 FocusListener AdjustmentEvent 移动了滚动条等组件 AdjustmentListener ComponentEvent 对象移动缩放显示隐藏等 ComponentListener WindowEvent 窗口收到窗口级事件 WindowListener ContainerEvent 容器中增加删除了组件 ContainerListener TextEvent 文本字段或文本去除发生改变 TextListener
在这里我们添加事件可以使用匿名内部类或者是外部类的方法,不过我比较喜欢内部类,比较方便,毕竟大部分只用一次。
(1) 案例1
需求:点击确定显示文本中的语句
public static void main(String[] args) { Frame s=new Frame("标题"); TextField tf=new TextField(30); Button bt=new Button("确定"); s.add(tf,BorderLayout.NORTH); s.add(bt); bt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { tf.setText("你好啊"); } }); s.pack(); s.setVisible(true); }
(2)案例2
需求:选中某个选项在控制台输出对应的信息
public static void main(String[] args) { Frame s=new Frame("标题"); Box b= Box.createHorizontalBox(); TextField tf=new TextField(30); Choice c=new Choice(); c.add("红色"); c.add("蓝色"); c.add("白色"); b.add(c); b.add(tf); tf.addTextListener(new TextListener() { @Override public void textValueChanged(TextEvent e) { System.out.println("你当前输入的文本="+tf.getText()); } }); c.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { System.out.println("你当前选中的选项="+e.getItem()); } }); s.add(b); s.pack(); s.setVisible(true); }
(3)案例3
需求:给关闭窗口设置事件监听,点击关闭后退出程序
public static void main(String[] args) { Frame s=new Frame("标题"); s.setSize(500,500); s.setLocation(500,500); s.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // s.pack(); s.setVisible(true); }