事件监听器
外观
导航 用户界面 主题: ) |
事件监听器一旦设置到小程序对象,就会等待对它执行一些操作,无论是鼠标点击、鼠标悬停、按键按下、按钮点击等。您正在使用的类(例如 JButton
等)会将活动报告给使用它的类设置的类。然后,该方法决定如何对该操作做出反应,通常使用一系列 if 语句来确定执行的是哪个操作。source.getSource()
将返回执行事件的对象的名称,而 source 是在执行操作时传递给函数的对象。每次执行操作时,都会调用该方法。
ActionListener
是一个接口,可以实现它来确定如何处理特定事件。实现接口时,应该实现该接口中的所有方法,ActionListener
接口有一个要实现的方法,名为 actionPerformed()
。
代码清单 9.6 显示了如何实现 ActionListener
代码清单 9.6:EventApplet.java
import java.applet.Applet;
import java.awt.Button;
import java.awt.Container;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class EventApplet extends Applet {
/**
* Init.
*/
public void init() {
Button clickMeButton = new Button("Click me");
final Applet eventApplet = this;
ActionListener specificClassToPerformButtonAction = new ActionListener() {
public void actionPerformed(ActionEvent event) {
Dialog dialog = new Dialog(getParentFrame(eventApplet), false);
dialog.setLayout(new FlowLayout());
dialog.add(new Label("Hi!!!"));
dialog.pack();
dialog.setLocation(100, 100);
dialog.setVisible(true);
}
private Frame getParentFrame(Container container) {
if (container == null) {
return null;
} else if (container instanceof Frame) {
return (Frame) container;
} else {
return getParentFrame(container.getParent());
}
}
};
clickMeButton.addActionListener(specificClassToPerformButtonAction);
add(clickMeButton);
}
}
|
编译并运行上面的代码时,当您点击按钮时,将出现消息“Hi!!!”。
小程序鼠标监听器通常与 AWT 鼠标监听器没有区别。当鼠标位于小程序区域时,监听器会收到有关鼠标点击和拖动(如果注册了 MouseListener
)以及鼠标移动(如果注册了 MouseMotionListener
)的通知。由于小程序通常很小,因此让小程序本身来实现鼠标监听器是一种常见的做法。