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

Java Swing 實作簡易記事本:完整程式碼解析與架構設計

     編輯:Java 程式設計入門

前言

本文將帶領讀者透過一個完整的 Java Swing 範例,實作一個功能齊全的簡易記事本應用程式。程式碼涵蓋了選單列、工具列、文字編輯區、狀態列、右鍵選單、檔案操作(新建、開啟、儲存、另存新檔)、編輯功能(剪下、複製、貼上、刪除、全選、時間/日期)、格式設定(字型、顏色、自動換行)以及關於對話框等核心功能。

核心架構與元件宣告

主類別 Notepad 繼承 JFrame,並實作 ActionListener 與 MouseListener 介面,以處理選單項目、按鈕點擊與滑鼠右鍵事件。主要元件包含:

  • 選單列 (JMenuBar):包含「檔案」、「編輯」、「格式」、「說明」四大主選單。
  • 工具列 (JToolBar):提供新建、開啟、儲存三個常用動作的快捷按鈕(使用圖示)。
  • 文字編輯區 (JTextArea):核心編輯元件,置於 JScrollPane 中以支援捲動。
  • 狀態列 (JLabel):顯示目前檔案狀態(如「新建文本」、「打開: 檔案路徑」)。
  • 右鍵彈出選單 (JPopupMenu):在文字區域按下滑鼠右鍵時顯示,提供剪下、複製、貼上、刪除功能。
  • 檔案選擇器 (JFileChooser) 與顏色選擇器 (JColorChooser):分別用於檔案開啟/儲存對話框與字型顏色選擇。

介面初始化與佈局細節

建構子 Notepad() 負責所有 UI 元件的初始化、屬性設定、佈局配置與事件監聽器註冊:

  1. 使用 BorderLayout 佈局管理器,將工具列置於北部(North)、文字編輯區(含捲動條)置於中間、狀態列置於南部。
  2. 為各選單項目設定快捷鍵(Mnemonics)與加速鍵,例如 Ctrl+N 新建、Ctrl+O 開啟、Ctrl+S 儲存、Ctrl+X/C/V 剪下/複製/貼上、Ctrl+F 查找。
  3. 工具列按鈕與對應選單項目共用同一個 ActionListener 適配器類別(如 File_new_actionAdapter),實現邏輯複用。
  4. 文字區域註冊滑鼠監聽器(this),並在 mouseReleased 中判斷是否為彈出觸發事件(e.isPopupTrigger()),以顯示右鍵選單。

關鍵變數與狀態管理

類別中宣告多個關鍵欄位追蹤檔案狀態:

  • filename、filepath:目前檔案名稱與完整路徑。
  • bsaved:布林旗標,標記內容是否已儲存(true 表示已儲存/無變更)。
  • strtext:暫存文字內容(程式碼中似乎未實際使用)。
  • check:控制自動換行狀態(對應 JCheckBoxMenuItem)。

程式碼結構觀察

提供的程式碼僅包含建構子與 UI 初始化部分,實際的檔案操作(FileNew、FileOpen、FileSave 等)、編輯功能(FileCut、FileCopy 等)、查找/取代、字型/顏色對話框邏輯均委派給對應的適配器類別或 actionPerformed 方法(見後續篇幅)。此模組化設計雖增加類別數量,但符合單一職責原則,便於維護擴充。

潛在改進方向

  • 資源路徑處理:圖示檔案(new.gif, open.gif, save.gif)使用相對路徑,打包成 JAR 時需改用 getResourceAsStream 載入。
  • 編碼支援:讀寫檔案時應明確指定字元編碼(如 UTF-8),避免跨平台亂碼。
  • 記憶體管理:大檔案讀入 JTextArea 可能導致記憶體壓力,可考慮分頁載入或使用 JEditorPane。
  • 現代化 UI:可引入 FlatLaf 等現代 Look and Feel,提升視覺體驗。

總結

此範例展示了 Java Swing 建立桌面應用程式的經典模式:以 JFrame 為主視窗,組合選單、工具列、文字元件與對話框,透過事件監聽器串聯使用者操作與業務邏輯。雖然程式碼風格屬於早期 Swing 風格(大量匿名內部類別、適配器類別),但邏輯清晰,適合初學者理解事件驅動程式設計與 GUI 架構基本概念。

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