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

簡易記事本實作代碼(二):檔案操作與編輯功能完整實現

     編輯:Java 程式設計入門

核心功能方法實作

事件委派方法

public void File_new_actionPerformed(ActionEvent e) { FileNew(); }
public void File_open_actionPerformed(ActionEvent e) { FileOpen(); }
public void File_save_actionPerformed(ActionEvent e) { FileSave(); }
public void File_saveto_actionPerformed(ActionEvent e) { FileSaveTo(); }
public void File_close_actionPerformed(ActionEvent e) { FileClose(); }

public void mouseReleased(MouseEvent e) {
    if (e.isPopupTrigger()) pm.show(this, e.getX(), e.getY());
}
// 其他滑鼠事件留空...

關閉確認邏輯

boolean toExit() {
    if (bsaved) return true;
    int i = JOptionPane.showConfirmDialog(this, "是否保存文件", "Jishiben",
        JOptionPane.YES_NO_CANCEL_OPTION);
    switch (i) {
        case JOptionPane.YES_OPTION: return true;
        case JOptionPane.NO_OPTION: return false;
        case JOptionPane.CANCEL_OPTION: return false;
        default: return false;
    }
}

檔案新建

void FileNew() {
    if (bsaved) {
        jTextArea1.setText("");
        jTextArea1.setFocusable(true);
        setTitle("未命名");
        statubar.setText("新建文本");
    } else {
        FileSaveTo();
    }
}

檔案開啟

void FileOpen() {
    if (!bsaved) { FileSave(); return; }
    try {
        if (jFileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
            String path = jFileChooser.getSelectedFile().getPath();
            File file = new File(path);
            char[] data = new char[(int) file.length()];
            int num = 0;
            FileReader fr = new FileReader(file);
            while (fr.ready()) num += fr.read(data, num, data.length - num);
            fr.close();
            jTextArea1.setText(new String(data, 0, num));
            filename = path;
            setTitle(filename);
            statubar.setText("打開: " + filename);
            updateFname();
            bsaved = false;
        }
    } catch (Exception e) {
        statubar.setText("Error Open: " + e.getMessage());
    }
}

檔案儲存

boolean FileSave() {
    if (filename == null) return FileSaveTo();
    if (!bsaved && filename.length() != 0) {
        try {
            FileWriter fw = new FileWriter(new File(filename));
            fw.write(jTextArea1.getText());
            fw.close();
            statubar.setText("保存文件: " + filename);
            bsaved = true;
            updateFname();
        } catch (Exception e) {
            statubar.setText("保存出錯: " + e.getMessage());
        }
    } else if (filename.length() == 0) {
        return FileSaveTo();
    }
    return true;
}

另存新檔

boolean FileSaveTo() {
    if (jFileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
        filename = jFileChooser.getSelectedFile().getPath();
        return FileSave();
    }
    return false;
}

標題更新

void updateFname() {
    String str = (filename == null) ? "無標題" : filename;
    if (!bsaved) str = "記事本" + str;
    setTitle(str);
    repaint();
}

檔案關閉

void FileClose() {
    if (!bsaved) {
        if (toExit()) FileSave();
        else System.exit(0);
    } else {
        System.exit(0);
    }
}

編輯操作:剪貼簿整合

void FileCut(ActionEvent e) {
    try {
        String str = jTextArea1.getSelectedText();
        if (str != null && str.length() != 0) {
            cb.setContents(new StringSelection(str), null);
            jTextArea1.replaceRange("", jTextArea1.getSelectionStart(), jTextArea1.getSelectionEnd());
            bsaved = false;
        }
    } catch (Exception ex) { statubar.setText("剪切出錯: " + ex.getMessage()); }
}

void FileCopy(ActionEvent e) {
    try {
        String str = jTextArea1.getSelectedText();
        if (str != null && str.length() != 0)
            cb.setContents(new StringSelection(str), null);
    } catch (Exception ex) { statubar.setText("複製出錯: " + ex.getMessage()); }
}

void FilePaste(ActionEvent e) {
    try {
        Transferable tr = cb.getContents(this);
        if (tr != null && tr.isDataFlavorSupported(DataFlavor.stringFlavor)) {
            String s = (String) tr.getTransferData(DataFlavor.stringFlavor);
            if (s != null) {
                jTextArea1.replaceRange(s, jTextArea1.getSelectionStart(), jTextArea1.getSelectionEnd());
                bsaved = false;
            }
        }
    } catch (Exception err) { err.printStackTrace(); }
}

void FileDel(ActionEvent e) {
    jTextArea1.replaceRange("", jTextArea1.getSelectionStart(), jTextArea1.getSelectionEnd());
    bsaved = false;
}

查找與時間戳

void FileFindNext(ActionEvent e) { new Frame1(jTextArea1); } // 假設 Frame1 為查找對話框

void FileTime(ActionEvent e) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    jTextArea1.append(" 當前時間: " + sdf.format(new Date()));
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved