想要实现用户界面,必须掌握 Java 事件处理的基本方法。现在开始探讨 Java AWT 事件模型的工作机制,从中可以看到如何捕获用户界面组件和输入设备产生的事件。另外,还将探讨如何以更加结构化的方式处理动作(actions)事件。
事件处理基础
任何支持 GUI 的操作环境都要不断地监视按键或点击鼠标这样的事件。操作环境将这些事件报告给正在运行的应用程序。如果有事件发生,每个应用程序将决定如何对它们做出响应。
像 Java 这样的面向对象语言,都将事件的相关信息封装在一个事件对象(event object)中。在 Java 中,所有的事件对象都最终派生于 java.util.EventObject 类。当然,每个事件类型还有子类,例如,ActionEvent 和 WindowEvent。
不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个 ActionEvent 对象,而窗口可以发送 WindowEvent 对象。
为了深入了解事件委托模型,下面用一个相应按钮点击事件的简单实例来说明所需要知道的所有细节。在这个示例中,想要在一个面板中放置三个按钮,添加三个监听器对象用来作为按钮的动作监听器。
先上代码:
package button;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonFrameTest {
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
JFrame frame = new ButtonFrame();
frame.setTitle("ButtonFrameTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
}
class ButtonFrame extends JFrame {
private JPanel buttonPanel;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 200;
public ButtonFrame() {
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
//create buttons
JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton("blue&#