日期:2014-05-20  浏览次数:20680 次

编写一个类似windows记事本的简单程序
编写一个类似windows记事本的简单程序,该程序能够创建文件、读取已经存在的文件、查看和修改文本以及保存为文本文件。

------解决方案--------------------
GUI部分
1 我不会GUI
2 就算我会,我也不告诉你,因为你太懒。
------解决方案--------------------
在 %JDK_HOME%/demo/jfc 目录下,有 Notepad 和 Stylepad 一个是记事本,一个是带格式的写字板。

都是用 Swing 做的,挺漂亮的,直接点 Notepad.jar 或 Stylepad.jar 就能直接运行,src 下面是源代码。
------解决方案--------------------
贴下偶写的代码,有2个类:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;

/**
 * <p>
 * Title: 程序编辑器
 * </p>
 * <p>
 * Description: 增强的文本编辑程序
 * </p>
 * <p>
 * Copyright: Copyright (c) 2005
 * </p>
 * <p>
 * Company:
 * </p>
 * 
 * @author 红色彼岸
 * @version 0.1
 */
class ProEFrame extends JFrame{
private JFileChooser fileChooser = new JFileChooser();

private JMenuBar menuBar;
private JMenu file, edit, format, help;
private JMenuItem newItem, openItem, saveItem, saveAsItem, pageSetItem, printItem, exitItem;
private JMenuItem undoItem, cutItem, copyItem, pasteItem, deleteItem, findItem, findNextItem, replaceItem, goToLineItem, selectAllItem, timeItem;
private JMenuItem autoNextLineItem, fontItem;
private JMenuItem helpItem, aboutItem;
private JTextArea textArea;
private JScrollPane scrollPane;
private final int TAB_SIZE = 4;

private File fileName;
private boolean firstSave = true;

public ProEFrame(String title) {
 // 设置窗体的标题栏和默认关闭操作
super(title);
 setDefaultCloseOperation(DISPOSE_ON_CLOSE);

 // 设置菜单栏和菜单的内容
 menuBar = new JMenuBar();
 file = new JMenu("文件(F)");
 edit = new JMenu("编辑(E)");
 format = new JMenu("格式(O)");
 help = new JMenu("帮助(H)");
 setQuickKey(file, 'F');
 setQuickKey(edit, 'E');
 setQuickKey(format, 'O');
 setQuickKey(help, 'H');
 newItem = new JMenuItem("新建(N)");
 openItem = new JMenuItem("打开(O)...");
 saveItem = new JMenuItem("保存(S)");
 saveAsItem = new JMenuItem("另存为...");
 pageSetItem = new JMenuItem("页面设置(U)...");
 printItem = new JMenuItem("打印(P)...");
 exitItem = new JMenuItem("退出");
 setQuickKey(newItem, 'N');
 setQuickKey(openItem, 'O');
 setQuickKey(saveItem, 'S');
 setQuickKey(pageSetItem, 'U');
 setQuickKey(printItem, 'P');

 file.add(newItem);
 file.add(openItem);
 file.add(saveItem);
 file.add(saveAsItem);
 file.addSeparator();
 file.add(pageSetItem);
 file.add(printItem);
 file.addSeparator();
 file.add(exitItem);

 undoItem = new JMenuItem("撤销(Z)");
 cutItem = new JMenuItem("剪切(X)");
 copyItem = new JMenuItem("复制(C)");
 pasteItem = new JMenuItem("粘贴(V)");
 deleteItem = new JMenuItem("删除");
 findItem = new JMenuItem("查找(F)...");
 findNextItem = new JMenuItem("查找下一个");
 replaceItem = new JMenuItem("替换(R)...");
 goToLineItem = new JMenuItem("转到(G)...");
 selectAllItem = new JMenuItem("全选(A)");
 timeItem = new JMenuItem("时间/日期");

 setQuickKey(undoItem, 'Z');
 setQuickKey(cutItem, 'X');