本文整理 11 道經典 AWT 事件處理練習,涵蓋按鈕、核取方塊、選單、對話框、卡片佈局、Java Bean 封裝等核心主題,附上解題思路與現代化重構建議。
| # | 主題 | 核心 API | 現代化建議 |
|---|---|---|---|
| 1 | 三按鈕切換文字 | Button, ActionListener, TextField | 改用 JButton + Lambda |
| 2 | 加入 Checkbox 聯動 | Checkbox, ItemListener | 改用 JCheckBox + ItemEvent |
| 3 | 所有觸發 action() 的元件 | Button, TextField, List, Choice, MenuItem | 統一用 ActionListener |
| 4 | handleEvent() 低層事件攔截 | handleEvent(Event) (1.0 模型) | 棄用;改用 AWTEventListener 或各專用 Listener |
| 5 | 焦點控制輸入導向 | handleEvent + requestFocus() | 用 FocusListener + KeyBinding |
| 6 | 完整應用程式框架 | Frame, MenuBar, Dialog, 所有元件 | 改用 JFrame + JMenuBar + JDialog |
| 7 | 修改 TextNew 大小寫行為 | TextField 子類別覆寫 | 用 DocumentFilter 攔截輸入 |
| 8 | CardLayout 遷移至 1.1 事件模型 | CardLayout + ActionListener | 直接用 JTabbedPane 或 CardLayout + Swing |
| 9 | JAR 封裝 Bean 測試 | jar cfm, Manifest.mf, BDK beanbox | Maven/Gradle 打包 + Spring Boot 測試 |
| 10 | 自訂 Valve Bean | BeanInfo, PropertyDescriptor, 序列化 | Lombok @Data + 標準 JavaBean 慣例 |
| 11 | 多層選單實作 | Menu, MenuItem, CheckboxMenuItem | JMenu + JMenuItem 遞迴建構 |
handleEvent() 單一入口 → 1.1 委派模型 XxxListener 介面 → Swing 統一 EventListener 體系。JTable/JList 等採用 Model-View 分離,資料變更自動通知視圖。getXxx/setXxx + 序列化 + 事件 add/removeXxxListener。Frame → JFrame(需 setDefaultCloseOperation)Button → JButton(支援圖示、工具提示)TextField → JTextField(支援 Document 模型)MenuBar/Menu/MenuItem → JMenuBar/JMenu/JMenuItemDialog → JDialog(模態/非模態靈活控制)完成這 11 題即可掌握 AWT 事件處理精髓,為後續 Swing/JavaFX 開發打下堅實基礎。