Java 1.0 AWT:事件模型「糟糕、笨拙、非物件導向」,靠 handleEvent() 巨大 switch/if 鏈處理所有事件。
Java 1.1 AWT:引入委派事件模型,元件扮演「事件源」與「事件接收器」,配合內部類封裝邏輯,事件以類別階層表達,可自訂事件類型。這不只是修補,是設計哲學重構,讓事件處理成為輔助系統設計的工具,而非阻礙。
Component) 產生事件物件 (ActionEvent 等)ActionListener 等) 實作特定介面addXXXListener() 註冊,型別安全、編譯期檢查add/removeXXXListener() 命名慣例 → 自省發現事件get/setXxx) → 視覺化建構器支援setSize() → setBounds() 等) 符合 Beans 模式| 舊方法 | 新方法 | 原因 |
|---|---|---|
setSize() | setBounds() / resize() | 符合 Beans 屬性模式 |
show() | setVisible(true) | 屬性 setter 慣例 |
hide() | setVisible(false) | 同上 |
resize() | setSize() | 屬性 setter |
move() | setLocation() | 屬性 setter |
layout() | doLayout() | 動詞語意明確 |
這些改名初看不合理,實為為了 Java Beans 標準化鋪路。
java.awt.datatransfer 支援資料傳輸SystemColor 讓 Java UI 融入原生桌面PopupMenu 元件ImageConsumer/Producer、Graphics2D 前身java.awt.print 簡易列印支援ScrollPane 容器自動處理滾動拖放操作在 1.1 尚未支援,標註「將在新版本支援」(後在 Java 2 / Swing 實現)。
Java 1.1 AWT 的革新確立了 Java GUI 發展的三大基因:
雖然 AWT 已被 Swing/JavaFX 取代,但 1.1 版奠定的事件模型、內部類應用、Beans 規範,至今仍活在每一行現代 Java 程式碼中。