首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 1.1 AWT 全面革新:新事件模型、內部類、Java Beans 基石與剪貼板/列印新功能

     編輯:Java 相關知識

歷史轉折:從笨拙到優雅

Java 1.0 AWT:事件模型「糟糕、笨拙、非物件導向」,靠 handleEvent() 巨大 switch/if 鏈處理所有事件。
Java 1.1 AWT:引入委派事件模型,元件扮演「事件源」與「事件接收器」,配合內部類封裝邏輯,事件以類別階層表達,可自訂事件類型。這不只是修補,是設計哲學重構,讓事件處理成為輔助系統設計的工具,而非阻礙。

核心革新三大支柱

1. 新事件模型 (委派模式)

  • 事件源 (Component) 產生事件物件 (ActionEvent 等)
  • 監聽器 (ActionListener 等) 實作特定介面
  • addXXXListener() 註冊,型別安全、編譯期檢查
  • 支援多播:單一事件通知多個監聽器

2. 內部類整合

  • 監聽器常實作為內部類,邏輯內聚於外部類
  • 自動捕獲外部實例參考,直接存取 UI 元件與業務方法
  • 解決回調問題,無需函數指標

3. Java Beans 規範基石

  • add/removeXXXListener() 命名慣例 → 自省發現事件
  • 屬性命名規範 (get/setXxx) → 視覺化建構器支援
  • 方法重命名 (setSize() → setBounds() 等) 符合 Beans 模式

API 細節變更

舊方法新方法原因
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 前身
  • 滑鼠操作支援:完整滑鼠事件模型
  • 列印 API:java.awt.print 簡易列印支援
  • 滾動支援:ScrollPane 容器自動處理滾動

拖放操作在 1.1 尚未支援,標註「將在新版本支援」(後在 Java 2 / Swing 實現)。

對開發者的影響

  • 舊代碼遷移:編譯器會對舊方法發出廢棄警告,需逐一更名。
  • 思維轉換:從「寫巨大 handleEvent」轉為「寫小而專一的監聽器」。
  • 工具支援:視覺化 GUI 建構器 (JBuilder, VisualAge, NetBeans 前身) 成為可能。

現代視角回顧

Java 1.1 AWT 的革新確立了 Java GUI 發展的三大基因:

  1. 事件驅動解耦 → Swing/JavaFX/React/Vue 同源架構
  2. 內部類/閉包捕獲上下文 → Lambda/方法參考 現代語法糖
  3. 標準化命名慣例驅動工具生態 → Spring Boot 自動配置、Annotation Processing、Kotlin DSL 同一哲學

雖然 AWT 已被 Swing/JavaFX 取代,但 1.1 版奠定的事件模型、內部類應用、Beans 規範,至今仍活在每一行現代 Java 程式碼中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved