用JAVA写一个迷你编辑器
用JAVA编写一个迷你编辑器
WINDOWS的记事本程序是非常方便的一个文字处理工具,用它来编辑纯文本文件快捷而灵巧。我用JAVA写了一个编辑器程序,模仿“记事本”的功能。这不是为了替代记事本,而是因为下列两个目的:
1 编辑器中拥有的功能是一切与文字相关的软件的基本功能,其许多功能的实现方法可以为其它程序所借鉴。甚至可以发展成一个独立的实用程序。2 因为编程中用到多方面的知识,所以可作为初学者综合所学知识的一次实践机会。
本程序命名为Notepad.java,用命令行:java Notepad 运行后呈现如下的界面图:
一 本程序的功能
本程序只有一个菜单条和一个带滚动条的编辑区域。菜单条有如下功能”
文件菜单,包含新建、打开、保存和另存为,退出等菜单项,用法与WINDOWS的记事本相仿,如弹出文件的打开对话框、保存对话框等。
编辑菜单,用以完成文字的复制、粘贴和删除任务。
格式菜单,设置文本自动换行、设置字体和输入当前日期。
显示帮助的内容和Abort信息。
二 用户界面的设计
编程分两步走。第一步先设计好如上的用户界面,编译通过后程序有了一个空壳。第二步在逐个给菜单项写功能代码,就是给每个菜单项编写一个监听器类,并添加到相应的菜单项上。
㈠ 菜单和文本框的设计
菜单和菜单项的声明在类开始处定义,创建菜单和文本区则在类的构造器中完成。菜单的声明如下:
public class Notepad extends JFrame { private JTextArea text = new JTextArea(30, 48); private Clipboard clipbd = ? getToolkit().getSystemClipboard(); private String fileName = "未命名" ;private boolean isNamed = false ;private String content = "" ;
private JMenuBar mb = new JMenuBar(); private JMenu ?file = new JMenu("文件") , ?edit = new JMenu("编辑"), ?style= new JMenu("格式"), ?help = new JMenu("帮助");
private JMenuItem fileItem[] = {?new JMenuItem("新建"), ?new JMenuItem("打开"), ?new JMenuItem("保存"), ?new JMenuItem("另存为"),?new JMenuItem("退出"),}; private JMenuItem editItem[] = {?new JMenuItem("复制"), ?new JMenuItem("粘贴") , ?new JMenuItem("删除"), ?new JMenuItem("全选"),} ;private JMenuItem styleItem[] = {?new JMenuItem("自动换行"), ?new JMenuItem("字体") , ?new JMenuItem("日期"),?new JMenuItem("Java"),} ;private JMenuItem helpItem[] = {?new JMenuItem("帮助"), ?new JMenuItem("关于"),} ;
声明了文本区text作为编辑区域,声明了剪贴板对象Clipboard clipbd用于编辑操作。fileName保存“打开或保存”的文件名,content? 用来保存从文件读写的内容,boolean isNamed 用来记录编辑区中的内容是否和一个文件相关联。如果文件已经有了名字,“保存”菜单就直接写入该文件,否则要先打开“保存对话框”。新建文件时 isNamed 为假,窗口标题显示“未命名”。接着就生命了菜单条mb 和 四个菜单file,edit,style, help 以及他们的菜单项。用fileItem[]来定义菜单项,便于以后要扩充菜单,这要增加一行 new JMenuItem("XXX"),和添加一个监听类XXXl 就可以了。、
㈡ 在构造器中构建视窗
在构造器中创建菜单,假如文本区,各菜单项添加监听器。
public Notepad() {?setJMenuBar(mb); // 窗口设置菜单条?Container cp = getContentPane() ;?cp.add(new JScrollPane(text)); // 添加有滚动条的文本区?text.set