本文將帶領讀者透過一個完整的 Java Swing 範例,實作一個功能齊全的簡易記事本應用程式。程式碼涵蓋了選單列、工具列、文字編輯區、狀態列、右鍵選單、檔案操作(新建、開啟、儲存、另存新檔)、編輯功能(剪下、複製、貼上、刪除、全選、時間/日期)、格式設定(字型、顏色、自動換行)以及關於對話框等核心功能。
主類別 Notepad 繼承 JFrame,並實作 ActionListener 與 MouseListener 介面,以處理選單項目、按鈕點擊與滑鼠右鍵事件。主要元件包含:
JScrollPane 中以支援捲動。建構子 Notepad() 負責所有 UI 元件的初始化、屬性設定、佈局配置與事件監聽器註冊:
BorderLayout 佈局管理器,將工具列置於北部(North)、文字編輯區(含捲動條)置於中間、狀態列置於南部。Ctrl+N 新建、Ctrl+O 開啟、Ctrl+S 儲存、Ctrl+X/C/V 剪下/複製/貼上、Ctrl+F 查找。ActionListener 適配器類別(如 File_new_actionAdapter),實現邏輯複用。this),並在 mouseReleased 中判斷是否為彈出觸發事件(e.isPopupTrigger()),以顯示右鍵選單。類別中宣告多個關鍵欄位追蹤檔案狀態:
filename、filepath:目前檔案名稱與完整路徑。bsaved:布林旗標,標記內容是否已儲存(true 表示已儲存/無變更)。strtext:暫存文字內容(程式碼中似乎未實際使用)。check:控制自動換行狀態(對應 JCheckBoxMenuItem)。提供的程式碼僅包含建構子與 UI 初始化部分,實際的檔案操作(FileNew、FileOpen、FileSave 等)、編輯功能(FileCut、FileCopy 等)、查找/取代、字型/顏色對話框邏輯均委派給對應的適配器類別或 actionPerformed 方法(見後續篇幅)。此模組化設計雖增加類別數量,但符合單一職責原則,便於維護擴充。
getResourceAsStream 載入。JTextArea 可能導致記憶體壓力,可考慮分頁載入或使用 JEditorPane。FlatLaf 等現代 Look and Feel,提升視覺體驗。此範例展示了 Java Swing 建立桌面應用程式的經典模式:以 JFrame 為主視窗,組合選單、工具列、文字元件與對話框,透過事件監聽器串聯使用者操作與業務邏輯。雖然程式碼風格屬於早期 Swing 風格(大量匿名內部類別、適配器類別),但邏輯清晰,適合初學者理解事件驅動程式設計與 GUI 架構基本概念。