基于java的记事本程序课程设计.docx
《基于java的记事本程序课程设计.docx》由会员分享,可在线阅读,更多相关《基于java的记事本程序课程设计.docx(33页珍藏版)》请在冰豆网上搜索。
基于java的记事本程序课程设计
1问题描述
设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:
剪切、复制、粘贴、删除;还能实现保存、另存为、设置字体和颜色等功能。
这次课程设计由**、**和我三个人合作完成。
**主要负责3概要设计和5测试分析。
**4.1JM程序界面设计,我负责4.2JM4类的实现。
由于4.3事件处理和撰写程序关系密切,这两项都由**负责。
2需求分析
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
(1)、菜单中有“文件”、“编辑”、“格式”、“帮助”四个主菜单;
(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
(3)、“编辑”中,有“剪切”、“复制”、“粘贴”三个子菜单:
用于剪切文字,复制文字,粘贴文字,删除文字。
(4)、“格式”中,有“字体”、“颜色”两个子菜单:
用于设置文字的字体而和颜色,字体有“宋体”、“楷体”、“黑体”颜色有“红”、“蓝”、“绿”。
(5)、“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。
3概要设计
3.1自定义类说明
3.1.1类名:
JM
(1)作用:
主类
(2)继承的父类:
JFrame类
(3)成员变量说明:
JMenuBarmb=newJMenuBar();//定义一个菜单项
/******定义各个菜单及其菜单项******/
JMenum1=newJMenu("文件(F)");
JMenuItemn=newJMenuItem("新建");
JMenuItemopen=newJMenuItem("打开(O)...Ctrl+O");
JMenuItemsave=newJMenuItem("保存(S)...Ctrl+S");
JMenuItemsave_as=newJMenuItem("另存为(A)...Ctrl+A");
JMenuItemexit=newJMenuItem("退出");
JMenum2=newJMenu("编辑(E)");
JMenuItemcopy=newJMenuItem("复制(C)Ctrl+C");
JMenuItemcut=newJMenuItem("剪切(X)Ctrl+X");
JMenuItempaste=newJMenuItem("粘贴(P)Ctrl+P");
JMenum3=newJMenu("格式(O)");
JMenuf1=newJMenu("字体(F)");
JMenuItemi11=newJMenuItem("宋体");
JMenuItemi12=newJMenuItem("楷体");
JMenuItemi13=newJMenuItem("黑体");
JMenucolor=newJMenu("颜色(C)");
JMenuItemi21=newJMenuItem("红");
JMenuItemi22=newJMenuItem("蓝");
JMenuItemi23=newJMenuItem("绿");
JMenum4=newJMenu("帮助(H)");
JMenuItemabout=newJMenuItem("关于");
/*****定义弹出菜单及其菜单项*****/
JPopupMenupm=newJPopupMenu();
JMenuItemitem1=newJMenuItem("复制");
JMenuItemitem2=newJMenuItem("剪切");
JMenuItemitem3=newJMenuItem("粘贴");
/***********编辑区**********/
Strings;
Containerc;
JTextAreaeditor=newJTextArea(s);
(4)主要方法说明:
JM()方法创建一个窗口并设置窗口的相应参数,以及把各个项目加到窗上
privatevoidaddJMenuBar()方法把各个菜单添加到菜单棒上privatevoidaddFileMenu()privatevoidaddEditMenu()privatevoidaddFormMenu()privatevoidaddHelpMenu()privatevoidaddJPopupMenu()各个方法则把相应的菜单项添加到各自的“文件”、“编辑”、“格式”、“帮助”菜单上,及弹出菜单上
3.1.2类名:
JM4
(1)作用:
主类
(2)继承的父类:
JM类
(3)主要成员方法说明:
编辑区键盘事件:
KeyListener类如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;
editor.addKeyListener(newKeyAdapter()
{publicvoidkeyTyped(KeyEvente){flag=1;}});
窗口的事件监听:
windowListener类;
classwindowListenerextendsWindowAdapter
{
publicvoidwindowClosing(WindowEvente)
{
if(flag==0)System.exit(0);
elseclose();
}
}
菜单项的事件监听:
ActionListener类;
publicvoidactionPerformed(ActionEvente)
{
Fontf2=editor.getFont();
JMenuItemmi=(JMenuItem)e.getSource();
……
}
3.2程序流程图
3.2.1主流程图
3.2.2“文件”菜单操作流程图
3.2.3“编辑”菜单操作流程图
3.2.4“格式”菜单操作流程图
、
3.2.5弹出菜单操作流程图
3.2.6“帮助”菜单操作流程图
4详细设计
4.1GUI程序界面设计
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
publicclassJMextendsJFrame
{
JMenuBarmb=newJMenuBar();//定义一个菜单项
/******定义各个菜单及其菜单项******/
JMenum1=newJMenu("文件(F)");
JMenuItemn=newJMenuItem("新建");
JMenuItemopen=newJMenuItem("打开(O)...Ctrl+O");
JMenuItemsave=newJMenuItem("保存(S)...Ctrl+S");
JMenuItemsave_as=newJMenuItem("另存为(A)...Ctrl+A");
JMenuItemexit=newJMenuItem("退出");
JMenum2=newJMenu("编辑(E)");
JMenuItemcopy=newJMenuItem("复制(C)Ctrl+C");
JMenuItemcut=newJMenuItem("剪切(X)Ctrl+X");
JMenuItempaste=newJMenuItem("粘贴(P)Ctrl+P");
JMenum3=newJMenu("格式(O)");
JMenuf1=newJMenu("字体(F)");
JMenuItemi11=newJMenuItem("宋体");
JMenuItemi12=newJMenuItem("楷体");
JMenuItemi13=newJMenuItem("黑体");
JMenucolor=newJMenu("颜色(C)");
JMenuItemi21=newJMenuItem("红");
JMenuItemi22=newJMenuItem("蓝");
JMenuItemi23=newJMenuItem("绿");
JMenum4=newJMenu("帮助(H)");
JMenuItemabout=newJMenuItem("关于");
/*****定义弹出菜单及其菜单项*****/
JPopupMenupm=newJPopupMenu();
JMenuItemitem1=newJMenuItem("复制");
JMenuItemitem2=newJMenuItem("剪切");
JMenuItemitem3=newJMenuItem("粘贴");
/***********编辑区**********/
Strings;
Containerc;
JTextAreaeditor=newJTextArea(s);
Fontt=newFont("sanserif",Font.PLAIN,12);
JM()
{
super("记事本");
setSize(500,400);
try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch(Exceptione){System.err.println("不能设置外观的原因;"+e);}
c=getContentPane();
c.add(newJScrollPane(editor));
addFileMenu();
addEditMenu();
addFormMenu();
addHelpMenu();
addJMenuBar();
addJPopupMenu();
setJMenuBar(mb);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
privatevoidaddFileMenu()
{
m1.add(n);
m1.add(open);
m1.add(save);
m1.add(save_as);
m1.addSeparator();
m1.add(exit);
m1.setFont(t);
}
privatevoidaddEditMenu()
{
m2.add(copy);
m2.add(cut);
m2.addSeparator();
m2.add(paste);
m2.setFont(t);
}
privatevoidaddFormMenu()
{
m3.add(f1);
m3.add(color);
m3.setFont(t);
f1.add(i11);
f1.add(i12);
f1.add(i13);
color.add(i21);
color.add(i22);
color.add(i23);
}
privatevoidaddHelpMenu()
{
m4.add(about);
m4.setFont(t);
}
privatevoidaddJMenuBar()
{
mb.add(m1);
mb.add(m2);
mb.add(m3);
mb.add(m4);
mb.setBackground(Color.cyan);
}
privatevoidaddJPopupMenu()
{
editor.add(pm);
pm.add(item1);
pm.add(item2);
pm.add(item3);
}
publicstaticvoidmain(Stringarg[]){newJM();}
}
4.2JM4类的实现
importjava.io.*;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.awt.Font.*;
publicclassJM4extendsJMimplementsActionListener,MouseListener//EventListener
{
intflag=0;
publicJM4()
{
/**********监听器接口**********/
n.addActionListener(this);
open.addActionListener(this);
save.addActionListener(this);
save_as.addActionListener(this);
exit.addActionListener(this);
copy.addActionListener(this);
cut.addActionListener(this);
paste.addActionListener(this);
i11.addActionListener(this);
i12.addActionListener(this);
i13.addActionListener(this);
i21.addActionListener(this);
i22.addActionListener(this);
i23.addActionListener(this);
about.addActionListener(this);
item1.addActionListener(this);
item2.addActionListener(this);
item3.addActionListener(this);
editor.addMouseListener(this);
addWindowListener(newwindowListener());
4.3事件处理
4.3.1编辑区键盘事件处理
/***************编辑区键盘事件******************/
editor.addKeyListener(newKeyAdapter()
{publicvoidkeyTyped(KeyEvente){flag=1;}});
}
4.3.2窗口事件处理
/**************窗口监听器**************/
classwindowListenerextendsWindowAdapter
{
publicvoidwindowClosing(WindowEvente)
{
if(flag==0)System.exit(0);
elseclose();
}
}
4.3.3菜单项事件处理
/***************菜单项监听器****************/
publicvoidactionPerformed(ActionEvente)
{
Fontf2=editor.getFont();
JMenuItemmi=(JMenuItem)e.getSource();
if(mi==n)//新建
{
if(flag==0)editor.setText("");
elseclose2();
}
if(mi==open)//打开
{loadFile();}
if(mi==save||mi==save_as)//保存和另存为
{saveFile();}
if(mi==exit)//退出
{if(flag==0)System.exit(0);close();}
if(mi==copy)//复制
{editor.copy();}
if(mi==cut)//剪切
{editor.cut();}
if(mi==paste)//粘贴
{editor.paste();}
if(mi==i11)//字体设置
{editor.setFont(newjava.awt.Font("宋体",java.awt.Font.PLAIN,f2.getSize()));}
if(mi==i12)
{editor.setFont(newjava.awt.Font("楷体",java.awt.Font.PLAIN,f2.getSize()));}
if(mi==i13)
{editor.setFont(newjava.awt.Font("黑体",java.awt.Font.PLAIN,f2.getSize()));}
if(mi==i21)//字体颜色
{editor.setForeground(Color.red);}
if(mi==i22)
{editor.setForeground(Color.blue);}
if(mi==i23)
{editor.setForeground(Color.green);}
if(mi==about)//帮助菜单的关于
{
Stringmessage="----记事本----"
+"由梁娟老师指导,罗世寿、罗军、刘艳共同完成\n感谢您的使用!
";
JOptionPane.showMessageDialog(JM4.this,message,"关于...",JOptionPane.PLAIN_MESSAGE);
}
/******弹出菜单********/
if(mi==item1)//复制
{editor.copy();}
if(mi==item2)//剪切
{editor.cut();}
if(mi==item3)//粘贴
{editor.paste();}
}
4.3.4编辑区的鼠标事件事件处理
/******编辑区的鼠标事件*********/
publicvoidmouseReleased(MouseEvente)
{
if(e.isPopupTrigger())
pm.show(editor,e.getX(),e.getY());
}
publicvoidmouseClicked(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmousePressed(MouseEvente){}
publicstaticvoidmain(String[]args){JM4d=newJM4();}}
5测试分析
(1)程序运行界面如下:
(2)“文件”菜单的菜单项:
(3)“编辑”菜单的菜单项:
(4)打开文件及另存文件时的界面:
由于打开文件和另存文件都要寻找路径,所以开始时界面相同。
(5)打开了某一个文本文件是的截图:
(6)设置字体为黑体和颜色为蓝色的截图:
(7)用弹出菜单实现复制、剪切、粘贴、的截图:
(8)记事本关闭、退出或新建时的截图:
当文件发生了剪切、删除、粘贴等操作,或者在编辑区中输入了字符,即文件进行了修改,当点击“文件”菜单中的“退出”项或者点击了窗口的关闭按钮时,就会弹出一个“保存文件?
”的对话框。
如果文件没有发生修改,关闭或者退出时,直接关闭了记事本程序。
由于其他的操作在截图里很难发现什么变化,所以只展示了上面的截图。
6课程设计总结
6.1设计体会
6.2致谢
在这次课程设计中,很感谢*老师的指导,将我从对于JAVA肤浅的认识引入到深层次的分析理解。
还感谢我们的任课老师*老师,由于她的悉心教导,我能用Java这一种语言进行比较熟练的编程。
还感谢和我一起做这次课程设计的组员****,由于我们的通力合作,这次课程设计得以顺利的完成。
参考文献
[1]孙全党,王吴迪,赵枫朝.Java程序设计应用教程[M].北京:
电子工业出版社,2006
[2]雷之宇.Java项目开发实践——网络篇[M].北京:
中国铁道出版社,2005
[3]赵玉阳.Java从入门到精通[M].北京:
清华大学出版社,2006
[4]李龙怡.Java编程实例讲解[M].北京:
高等教育出版社,2005
[5]李尊朝,苏军.Java语言程序设计[M].北京:
中国铁道出版社,2009
附录(源程序清单)
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
publicclassJMextendsJFrame
{
JMenuBarmb=newJMenuBar();//定义一个菜单项
/******定义各个菜单及其菜单项******/
JMenum1=newJMenu("文件(F)");
JMenuItemn=newJMenuItem("新建");
JMenuItemopen=newJMenuItem("打开(O)...Ctrl+O");
JMenuItemsave=newJMenuItem("保存(S)...Ctrl+S");
JMenuItemsave_as=newJMenuItem("另存为(A)...Ctrl+A");
JMenuItemexit=newJMenuItem("退出");
JMenum2=newJMenu("编辑(E)");
JMenuItemcopy=newJMenuItem("复制(C)Ctrl+C");
JMenuItemcut=newJMenuItem("剪切(X)Ctrl+X");
JMenuItempaste=newJMenuItem("粘贴(P)Ctrl+P");
JMenum3=newJMenu("格式(O)");
JMenuf1=newJMenu("字体(F)");
JMenuItemi11=newJMenuItem("宋体");
JMenuItemi12=newJMenuItem("楷体");
JMenuItemi13=newJMenuItem("黑体");
JMenucolor=newJMenu("颜色(C)");
JMenuItemi21=newJMenuItem("红");
JMenuItem