1、 3 1 问题描述 设计一个 具有 GUI 界面的 记事本 , 含有简单的文字编辑功 能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、设置字体和颜色 等功能。 这次课程设计由 *、 *和我 三 个人合作完成。 *主要 负责 3 概要设计 和 5测试分析 。 *4.1JM 程序界面设计 , 我 负责 4. 2JM4 类的实现 。由于 4.3 事件处理和撰写程序关系密切,这两项都由 *负责。 2 需求分析 本程序要构建的记事本程序参照了 Windows 操作系统的记事本工具,其功能有以下几个方面: (1)、 菜单中有 “文件”、“编辑”、 “格式”、 “帮助” 四 个主菜单 ; (2)、 “
2、文件”有 “新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。 (3)、 “ 编辑”中,有 “剪切”、“复制”、“粘贴”三 个子 菜单 :用于剪切文字,复制文字,粘贴文字 ,删除文字 。 (4)、“格式”中,有“字体”、“颜色”两个子菜单:用于设置文字的字体而和颜色,字体有“宋体”、“楷体”、“黑体”颜色有“红”、“蓝”、“绿”。 (5)、 “帮助” 菜单中有 “ 关于 ”的子菜单,用于描述 记事本程序的 相关 信息 。 3 概要设计 3 1 自定义类说明 3.1.1 类名 : JM ( 1) 作用 : 主类 ( 2) 继承的父类 :
3、JFrame 类 ( 3) 成员变量说明: JMenuBar mb=new JMenuBar(); /定义一个菜单项 /*定义各个菜单及其菜单项 */ 4 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 e
4、xit=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(“宋体 “); JMenuIt
5、em 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(“帮助 ( )“); JMenuItem about=new JMenuItem(“关于 “); /*定义弹出菜单及其菜单项 */ JPopupMenu p
6、m=new JPopupMenu(); JMenuItem item1=new JMenuItem(“复制 “); JMenuItem item2=new JMenuItem(“剪切 “); JMenuItem item3=new JMenuItem(“粘贴 “); /*编辑区 */ String s; 5 Container c; JTextArea editor=new JTextArea(s); ( 4) 主要 方法说明: JM( )方法 创建一个窗口并设置窗口的相应参数,以及把各个 项目 加到窗上 private void addJMenuBar( )方法把各个菜单添加到菜单棒上 pr
7、ivate void addFileMenu( ) private void addEditMenu( ) private void addFormMenu( ) private void addHelpMenu( ) private void addJPopupMenu( )各 个方法则把相应的菜单项添加到各自的 “文件”、“编辑”、“格式”、“帮助”菜单上,及弹出 菜单上 3.1.2 类名 : JM4 ( 1) 作用 : 主类 ( 2) 继承的父类 : JM 类 ( 3) 主要 成员 方法说明: 编辑区键盘事件 : KeyListener 类 如果记事本的编辑区内用键盘输入了字符,就能够被
8、程序监听; 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(); 6 菜单项的事件监听 : ActionListener 类; public void actionPerformed(Ac
9、tionEvent e) Font f2=editor.getFont(); JMenuItem mi=(JMenuItem) e.getSource(); 3 2 程序流程图 3.2.1 主 流程图 7 3.2.2 “文件”菜单操作流程图 开始 结束 图 3.1 主流程图 输入文字? 新建 打开 保存 另存为 复制 剪切 粘贴 字体 颜色 关于 退出 N Y 8 3.2.3 “编辑”菜单操作流程图 开始 “编辑”菜单 剪切 用editor.cut()实现 复制 用 editor.copy()实现 粘贴 用 editor.paste()实现 退出或关闭 文件是否修改 用 saveFile()保
10、存文件 结束 用 close()关闭文件 Y N 图 3.3 “编辑”菜单操作流程图 开始 用 JFileChooser()选择文件另存的 路径 用 saveFlie()保存文件 图 3.2 “文件”菜单操作流程图 结束 N 新建 用 loadFile()读取所选的文件内容到记事本 “文件”菜单 另存为 打开 用 JFileChooser()选择所有打开文件路径 退出或关闭 文件是否修改 用 saveFlie()保存文件 Y N 用 close()关闭文件 文件是否修改 新文件 原文件 用 close2()选择 Y 保存 用 saveFile()保存文件 9 3.2.4 “ 格式 ”菜单操作流
11、程图 、 10 3.2.5 弹出 菜单操作流程图 开始 图 3.5 弹出 菜单操作流程图 退出或关闭 文件是否修改 用 saveFlie()保存文件 Y 结束 N 用 close()关闭文件 mouseReleased()监听编辑区的鼠标事件 剪切 用editor.cut()实现 复制 用 editor.copy()实现 粘贴 用 editor.paste() 实现 用editor.setFont()实现 用editor.setForeground()实现 宋体 绿色 用editor.setFont()实现 用editor.setFont()实现 用editor.setForeground()
12、实现 用editor.setForeground()实现 开始 颜色 字体 黑体 楷体 蓝色 红色 退出或关闭 文件是否修改 用 savaFlie()保存文件 Y 结束 N 用 close()关闭文件 图 3.4 “格式 ”菜单操作流程图 11 3.2.6 “ 帮助 ”菜单操作流程图 4 详细设计 4 1 GUI 程序界面设计 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; public class JM extends JFrame JMenuBar mb=new JMen
13、uBar(); /定义一个菜单项 /*定义各个菜单及其菜单项 */ 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“); 开始 “帮助”菜单 关于记事本 显示记事本的有关信息 结束 图 3.6 “帮助”菜单操作流程图 12 JMen
14、uItem 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(“宋体 “);
15、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(“帮助 ( )“); 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); Font t=new Font(“sanserif“,Font.PLAIN,12); JM()