一 事件
1.1 事件源
图形用户界面上每个可能产生事件的组件称为事件源。
1.2 事件监听者
Java系统中注册的用于接收特殊事件的类。不同的事件对应着不同的监听者,要想事件被监听者监听并处理,则需先将事件源注册到监听者。
1.3 事件处理流程
事件源触发事件并将事件作为一个参数传递给监听者,监听者实现某个接口中的抽象方法,从而实现对事件的处理。Java的事件处理机制是一个委托事件模型。
事件源注册的方法如下:
public void addActionListener(ActionListener l)
添加特定的动作,监听接收来自事件源的动作事件,如果l为空,不会产生任何动作。
监听者实现的接口为ActionListener接口,接口ActionListener来自包java.awt.event。
在此接口中只有一个方法:
public void actionPerformed(ActionEvent e)
当事件对象e发生时,调用此方法。监听者就需要实现这个方法。
1.4 动作事件
ActionEvent包含一个事件,该事件为执行动作事件ACTION_PERFORMED。触发这个事件的动作为:
(1) 点击按钮。
(2) 双击列表中的选项。
(3) 选择菜单项。
(4) 在文本框中输入回车。
常用方法如下:
public String getActionCommand() 返回引发某个事件的命令按钮的名字,如果名字为空,那么返回标签值。
public void setActionCommand(String command) 设置引发事件的按钮的名字,默认设置为按钮的标签。
例:测试动作事件
1 packagetest;2
3 import java.awt.*;4 import java.awt.event.*;5 import java.applet.*;6 public class UseButton extends Applet implementsActionListener{7 /**
8 *9 */
10 private static final long serialVersionUID = 1L;11
12 String str = newString();13 Button b1; //声明按钮对象;
14 Button b2;15 Color c;16 public voidinit()17 {18 b1 = new Button("按钮对象1");19 b2 = new Button("按钮对象2");20 //添加事件监听者
21 b1.addActionListener(this);22 b1.setBackground(Color.yellow);23 b2.addActionListener(this);24 this.add(b1);25 this.add(b2);26
27 }28 public voidstart()29 {30 str =b1.getLabel();31 //repaint();
32 }33 public voidpaint(Graphics g)34 {35 g.setColor(c);36 g.drawString("引发事件的对象的标签:" + str, 80,60);37 }38 //实现接口中的方法,响应动作事件
39 public voidactionPerformed(ActionEvent e)40 {41 String arg =e.getActionCommand();42 if(arg == "按钮对象1")43 {44 c =Color.red;45 str = "按钮对象1";46 }47 else if(arg == "按钮对象2")48 {49 c =Color.green;50 str = "按钮对象2";51 }52 repaint();53 }54 }
View Code
点击按钮对象1 ,点击按钮对象2
输出结果:
1.5 文本事件(TextEvent)
文本事件即代表文本区域中文本变化的事件TEXT_VALUE_CHANGED,在文本区域中改变文本内容。
public void addTextListener(TextListener l) 添加特定的文本事件,监听者接收来自文本对象的文本事件。如果l为空,那么不会抛出任何异常,而且也不会完成任何动作。
public interface TextListener extends EventListener 用于接收文本事件的监听者接口。当对象的文本发生变化时,调用监听者对象的方法。
接口中的方法为:
public void textValueChanged(TextEvent e) 当文本发生改变时调用。
public Object getSource() 发生事件的对象,从EventObject继承来的方法。
例:测试文本事件
1 packagetest;2
3 import java.awt.*;4 import java.awt.event.*;5 importjava.applet.Applet;6 public class UseTextEvent extends Applet implementsActionListener, TextListener{7 /**
8 * @ YMM 2016/05/099 */
10 private static final long serialVersio