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

Java Swing 記事本實作(二):檔案操作、編輯功能與時間戳記

     編輯:Java 相關知識

概述

承接第一部分的 UI 初始化,本篇實作記事本的核心功能:檔案管理(新建、開啟、儲存、另存、關閉)、編輯操作(剪下、複製、貼上、刪除、全選)、尋找下一個 以及 插入時間/日期。

檔案操作核心邏輯

狀態旗標 bsaved

布林變數 bsaved 追蹤內容是否已儲存:true 表示無異動,false 表示有未存變更。所有修改內容的操作(輸入、貼上、刪除、剪下)均將其設為 false。

新建檔案 FileNew()

void FileNew() {
    if (bsaved) {
        jTextArea1.setText("");
        jTextArea1.setFocusable(true);
        setTitle("未命名");
        statubar.setText("新建文本");
    } else {
        FileSaveTo(); // 提示儲存後再新建
    }
}

開啟檔案 FileOpen()

使用 JFileChooser 選擇檔案,以 FileReader 讀取字元陣列並設定至文字區:

File file = new File(strFileOpen);
int flength = (int) file.length();
char[] data = new char[flength];
FileReader fr = new FileReader(file);
int num = 0;
while (fr.ready()) {
    num += fr.read(data, num, flength - num);
}
fr.close();
jTextArea1.setText(new String(data, 0, num));

讀取成功後更新 filename、視窗標題、狀態列,並將 bsaved = false。

儲存與另存 FileSave() / FileSaveTo()

  • FileSave():若 filename 為 null 則轉呼叫 FileSaveTo();否則以 FileWriter 寫入。
  • FileSaveTo():顯示儲存對話框取得路徑,再呼叫 FileSave()。

寫入成功後設定 bsaved = true 並呼叫 updateFname() 更新標題(未儲存時標題前綴「記事本」)。

關閉檔案 FileClose()

若有未存變更,彈出確認對話框(JOptionPane.YES_NO_CANCEL_OPTION):

  • 是 → 呼叫 FileSave()
  • 否/取消 → 直接結束程式(System.exit(0))

編輯操作與剪貼簿整合

透過 java.awt.datatransfer 套件實作:

  • 剪下:取得選取文字 → 建立 StringSelection → 設定至系統剪貼簿(cb.setContents()) → 以 replaceRange("", start, end) 移除選取區。
  • 複製:同剪下但不移除文字。
  • 貼上:自剪貼簿取得 Transferable → 擷取 DataFlavor.stringFlavor → replaceRange() 插入游標位置。
  • 刪除:直接 replaceRange("", start, end)。

尋找下一個與時間戳記

  • FileFindNext():實例化 Frame1(尋找/替換對話框,見第三部分)。
  • FileTime():使用 SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 格式化當前時間,append() 至文字區末尾。

滑鼠右鍵選單支援

mouseReleased() 檢測 isPopupTrigger(),在游標位置顯示 JPopupMenu pm(含剪下、複製、貼上、刪除)。

小結

此部分完整呈現了文字編輯器的檔案生命週期管理、剪貼簿整合與基本編輯功能,程式碼結構清晰,適合作為 Swing 檔案操作的教學範例。

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