2009-08-22 35 views

回答

2

兩者。 EventObject是AWTEvent的超類。 AWTEvent是您將在日常代碼中使用的許多事件的超類。大多數鍵盤,鼠標或基本用戶輸入事件都是AWTEvents。對於更具體的Swing事件,大多數擴展EventObject - 儘管不是全部。

例如:動作事件延伸的AWTEvent延伸的EventObject

http://java.sun.com/javase/6/docs/api/java/awt/event/ActionEvent.html

的EventObject是一個非常基本的類,實際上只是最基本的接口(雖然它實際上不是一個接口)。 AWTEvent是實際處理較低級別輸入事件的類。對於不直接處理硬件輸入事件的Swing類,它們只需要擴展由EventObject提供的功能,所以這就是它們的擴展。

如果您想查看哪些事件擴展了哪些類轉到API並瀏覽java.awt.event(http://java.sun.com/javase/6/docs/api/java/awt/event/package-frame.html)和javax.swing.event(http://java.sun.com/javase/6/docs/api/javax/swing/event/package-frame.html)程序包以查看哪些事件擴展了哪些類。

+0

實際上'AWTEvent'不是大多數Swing事件的基類。 Swing不知道是否一致。 – 2009-08-22 02:42:06

+0

對,你正在考慮的大部分事件實際上都是AWT事件,我從來沒有注意到。 – 2009-08-22 02:46:47

+0

AWTEvent不是任何** Swing事件的基類; AWTEvents僅由AWT組件使用。 Swing建立在AWT之上,但它有許多完全獨立於AWT的事件類。爲什麼他們應該是AWTEvent的子類? – 2009-08-22 03:00:48

0

嗯,它必須是EventObject,因爲它是AWTEvent的超類。更重要的是,正如名稱所示,AWTEvent是所有內置AWT事件類的超類,而標準庫的其他部分(包括Swing)中的事件分類則直接從EventObject下降。您可以通過查看docs來查看所有這些信息。

但是這真的是一個重言式:什麼是所有事件類的超類?當然,他們都被分類了!我告訴你的是標準庫的真實(AFAIK),但任何人都可以編寫一個從任何現有的非最終類繼承而來的類,並將其命名爲「SomethingEvent」。注意不要太多地讀入名稱和類層次結構。