EventObject详解

发布时间:2023-05-23

一、EventObject类

EventObject类是所有事件对象的父类,是事件处理机制的核心,它封装了与事件监听器有关的所有信息。当事件被触发时,将会创建一个事件对象,该事件对象包含着触发事件的相关信息。EventObject类具有以下属性:

public Object getSource():获取事件源
public boolean isConsumed():判断事件是否已经被处理
public void consume():标记事件已经被处理

其中getSource()方法返回的是事件源,也就是哪个组件触发了事件,isConsumed()和consume()方法则是用来标记事件是否被处理过的。

二、Object to do还是doing?

在处理事件的过程中,有两种处理方式:一种是在事件发生前预先进行处理,另一种则是在事件发生后进行处理。前者叫做“Object to do”,后者叫做“Object doing”。 Object to do的处理方式可以使用事件监听机制中的“事件预处理器”来实现,它可以在事件被触发前对事件进行监控,根据事件的类型和属性来进行相应的处理。而Object doing的处理方式则需要使用事件监听机制中的“事件监听器”来实现,它是一个类,需要实现事件监听器接口中的方法,在事件发生时进行相应的处理。

三、Objective与Object complement

Objective和Object complement是英语语法中的两个概念,它们和事件监听机制有一定的联系。Objective是一个动作或行为所追求的目标,它和事件监听器有关,可以理解为事件监听器监听的目标是什么。而Object complement则是指不直接为动词所作用的成分,在事件监听机制中,可以理解为事件监听器所需要的其他资源。

四、Objection

Objection是事件处理机制中的一种错误处理机制,当事件处理出现错误时,会创建一个Objection对象并抛出异常。Objection对象包含错误信息以及引起错误的事件对象。

五、Object to

Object to是向事件对象传递参数的一种方式,在事件被触发时可以通过事件对象将一些参数传递给事件监听器。传递参数的方式可以使用事件监听器接口中的方法,在相应的方法中添加参数来实现。

六、Objected

Objected是事件监听器接口中的一个方法,它表示事件处理完毕后所需要执行的操作。在事件监听器中,可以实现Objected方法,将需要执行的操作放在该方法中。

完整代码示例

以下代码为一个简单的监听器实现,用于监听一个按钮的点击事件,当按钮被点击时,会弹出对话框,显示“Hello World!”:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyListener implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        if (event.getSource() instanceof JButton) {
            JButton btn = (JButton)event.getSource();
            if (btn.getText().equals("Click Me")) {
                JOptionPane.showMessageDialog(null, "Hello World!");
                event.consume();   // 标记事件已经被处理
            }
        }
    }
}
public class TestEventObject {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Test EventObject");
        frame.setLayout(new FlowLayout());
        JButton btn = new JButton("Click Me");
        btn.addActionListener(new MyListener());   // 添加监听器
        frame.add(btn);
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
}