Java 所有事件类的超类

Java 所有事件类的超类,java,swing,Java,Swing,我不能确定那个超类是AWTEvent类还是EventObject?两者都是。EventObject是AWTEvent的超类。AWTEvent是您将在日常代码中使用的许多事件的超类。大多数键盘、鼠标或基本用户输入事件都是awtevent。对于更具体的Swing事件,大多数事件都扩展了EventObject——尽管不是全部 例如:ActionEvent扩展了AWTEvent,AWTEvent扩展了EventObject EventObject是一个非常基本的类,实际上只是最基本的接口(尽管它实际上

我不能确定那个超类是AWTEvent类还是EventObject?

两者都是。EventObject是AWTEvent的超类。AWTEvent是您将在日常代码中使用的许多事件的超类。大多数键盘、鼠标或基本用户输入事件都是awtevent。对于更具体的Swing事件,大多数事件都扩展了EventObject——尽管不是全部

例如:ActionEvent扩展了AWTEvent,AWTEvent扩展了EventObject

EventObject是一个非常基本的类,实际上只是最基本的接口(尽管它实际上不是一个接口)。AWTEvent是在较低级别上实际处理输入事件的类。对于不直接处理硬件输入事件的Swing类,它们只需要扩展EventObject提供的功能,所以这就是它们所扩展的


如果您想查看哪些事件扩展了哪些类,哪些类转到API,并浏览java.awt.event()和javax.swing.event()包以查看哪些事件扩展了哪些类。

那么,它必须是EventObject,因为它是AWTEvent的超类。更重要的是,顾名思义,AWTEvent是所有内置AWT事件类的超类,而标准库的其他部分(包括Swing)中的事件类直接从EventObject派生。你可以通过看地图自己看到这一切


但这确实是一个重言式:什么是所有事件类的超类?当然,它们都是从类中派生出来的!我告诉你的对于标准库是正确的(AFAIK),但是任何人都可以编写一个从任何现有的非最终类派生的类,并将其命名为“somethingenevent”。注意不要过多地阅读名称和类层次结构。

实际上
AWTEvent
不是大多数Swing事件的基类。Swing并不以一致性著称。没错,我想到的大多数事件实际上都是AWT事件,我从来没有注意到。AWTEvent不是任何Swing事件的基类;AWT通风口仅由AWT组件使用。Swing构建在AWT之上,但它有许多完全独立于AWT的事件类。为什么它们应该是AWTEvent的子类?这并不正确-Swing组件仍然使用java.awt.event-ActionEvent、MouseEvent、KeyEvent中定义的几乎所有AWTEvent子类,等等——javax.swing.event中定义的一些事件确实扩展了AWTEvent——但是javax.swing.event中添加的大多数事件都是用于侦听模型中的更改的——所以只需扩展EventObject而不是AWTEvent。