1 问题描述
设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、设置字体和颜色等功能。
这次课程设计由**、**和我三个人合作完成。**主要负责3概要设计和5测试分析。**4.1GUI程序界面设计,我负责4. 2JM4类的实现。由于4.3事件处理和撰写程序关系密切,这两项都由**负责。
2 需求分析
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
(1)、菜单中有“文件”、“编辑”、“格式”、“帮助”四个主菜单; (2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
(3)、“编辑”有“剪切”、“复制”、“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字。
(4)、“格式”中,有“字体”、“颜色”两个子菜单:用于设置文字的字体而和颜色,字体有“宋体”、“楷体”、“黑体”颜色有“红”、“蓝”、“绿”。
(5)、“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。 (6)、还有弹出菜单也能实现“剪切”、“复制”、“粘贴”三个子菜单的功能。
3 概要设计
3.1自定义类说明
3.1.1 类名: JM (1)作用: 主类
(2)继承的父类: JFrame类 (3)成员变量说明:
JMenuBar mb=new JMenuBar(); //定义一个菜单项 /******定义各个菜单及其菜单项******/
JMenu m1=new JMenu(\文件(F)\ JMenuItem n=new JMenuItem(\新建\
JMenuItem open=new JMenuItem(\打开(O)... Ctrl+O\ JMenuItem save=new JMenuItem(\保存(S)... Ctrl+S\ JMenuItem save_as=new JMenuItem(\另存为(A)...Ctrl+A\ JMenuItem exit=new JMenuItem(\退出\
JMenu m2=new JMenu(\编辑(E)\
JMenuItem copy=new JMenuItem(\复制(C) Ctrl+C\ JMenuItem cut=new JMenuItem(\剪切(X) Ctrl+X\ JMenuItem paste=new JMenuItem(\粘贴(P) Ctrl+P\
JMenu m3=new JMenu(\格式(O)\ JMenu f1=new JMenu(\字体(F)\ JMenuItem i11=new JMenuItem(\宋体\ JMenuItem i12=new JMenuItem(\楷体\ JMenuItem i13=new JMenuItem(\黑体\ JMenu color=new JMenu(\颜色(C)\ JMenuItem i21=new JMenuItem(\红\ JMenuItem i22=new JMenuItem(\蓝\ JMenuItem i23=new JMenuItem(\绿\
JMenu m4=new JMenu(\帮助(H)\ JMenuItem about=new JMenuItem(\关于\/*****定义弹出菜单及其菜单项*****/ JPopupMenu pm=new JPopupMenu(); JMenuItem item1=new JMenuItem(\复制\ JMenuItem item2=new JMenuItem(\剪切\ JMenuItem item3=new JMenuItem(\粘贴\/***********编辑区**********/ String s;
Container c;
JTextArea editor=new JTextArea(s);
(4)主要方法说明:
JM( )方法创建一个窗口并设置窗口的相应参数,以及把各个项目加到窗上 private void addJMenuBar( )方法把各个菜单添加到菜单棒上 private void addFileMenu( ) private void addEditMenu( ) private void addFormMenu( ) private void addHelpMenu( ) private void
addJPopupMenu( )各个方法则把相应的菜单项添加到各自的“文件”、“编辑”、
“格式”、“帮助”菜单上,及弹出菜单上 3.1.2 类名: JM4 (1)作用: 主类
(2)继承的父类: JM类 (3)主要成员方法说明:
编辑区键盘事件:KeyListener类 如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;
editor.addKeyListener( new KeyAdapter() {public void keyTyped(KeyEvent e){flag=1;}});
窗口的事件监听:windowListener类;
class windowListener extends WindowAdapter {
public void windowClosing(WindowEvent e)
{
if(flag==0)System.exit(0); else close();
} }
菜单项的事件监听:ActionListener类;
public void actionPerformed(ActionEvent e) {
Font f2=editor.getFont();
JMenuItem mi=(JMenuItem) e.getSource();
…… }
3.2 程序流程图
3.2.1主流程图
开始
新 建打开保存另存为复制剪切粘贴字体颜色输入文字? N Y 关于
结束 退出
图3.1主流程图
3.2.2 “文件”菜单操作流程图 开始 N “文件”菜单 新建打开保存另存为 用JFileChooser()选择所有打开文件路径 文件是否修改 用JFileChooser()选择文件另存的路径 Y 用loadFile()读取所选的文件内容到记事本 用close2()选择 用saveFlie()保存文件 用saveFile()保存文件 新文件 原文件 用close()关闭文件 退出或关闭 N 文件是否修改 Y 用saveFlie()保存文件 结束 图3.2 “文件”菜单操作流程图