记事本程序设计报告.docx
《记事本程序设计报告.docx》由会员分享,可在线阅读,更多相关《记事本程序设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
记事本程序设计报告
陕西师范大学网络教育学院
课程名称JAVA程序设计
学习中心(点):
甘肃张掖远程教育财会培训学校
专业:
计算机科学与技术
层次:
专升本
姓名:
蒋生彪
批次:
092
记事本程序设计报告
记事本程序的设计
摘要
该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能,不同之处是本程序能够对文字的颜色进行设置。
该程序主要用到了Javaswing和事件监听等。
关键字:
记事本程序;Java语言;Jcreator
前言
Java的前身是Oak,它一开始只是被应用于消费性电子产品中。
后来它的开发者们发现它还可以被用于更大范围的Internet上。
1995年,Java语言的名字从Oak编程了Java。
1997年J2SE1.1发布。
1998年J2SE1.2发布,标志Java2的诞生。
十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。
Java的体系结构由Java语言、Javaclass、JavaAPI、Java虚拟机组成。
它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。
Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
Java的平台标准有JavaME,JavaSE和JavaEE。
Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。
目前在众多的支持Java的开发工具中主要的7有JavaDevelopmentKit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。
其中JavaDevelopmentKit简称JDK是大多开发工具的基础。
以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。
1需求分析
1.1需求分析
现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad++,win32pad,SkimEdit,UniRed,xint。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:
有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
1.2功能设计
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
(1).菜单中有“文件”,“编辑”,“关于”三个主菜单。
(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:
分别用于新
建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个字菜单:
用于剪切文字,复制文字,粘贴文字。
增加了“颜色”子菜单来对文字的颜色进行设置。
(4)“关于”菜单中有关于记事本程序的制作日期,作者等信息
2.概要设计
2.1程序设计思路
在本程序中,设计了一个菜单栏和文本内容区。
设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“关于”。
JTextPane主要用来输入文本。
为了加入颜色的设置,所以加了一个JColorChooser组件。
2.2程序运行界面
2.3模块说明图
图1
在图1中,首先创建一个名为mynotepad的类并继承JFrame类作为最底层的容器。
图2
在图2中,构造一个mynotepad类时要做三件事情,分别是初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器。
2.4程序流程图
FalseFalse
truetruetruetruetruetruetruetrue
图3
2.5程序相关说明
整个记事本分为2快:
菜单栏和内容输入区。
本程序中首先定义一个mynotepad类继承JFrame作为最底层容器。
(1).Textcontent为程序文本输入区。
(2).Menu为菜单栏。
(3).AboutDialog为关于对话框。
(4).要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。
3.程序详细设计与分析
3.1.初始化组件
initTextContent();
initMenu();
initAboutDialog();
3.2.构建菜单栏及其下拉菜单
JMenu[]menus=newJMenu[]{
newJMenu("文件"),
newJMenu("编辑"),
newJMenu("关于")
};
JMenuItemoptionofmenu[][]=newJMenuItem[][]{{
newJMenuItem("新建"),
newJMenuItem("打开"),
newJMenuItem("保存"),
newJMenuItem("退出")
},
{
newJMenuItem("复制"),
newJMenuItem("剪切"),
newJMenuItem("粘贴"),
newJMenuItem("颜色")
},
{
newJMenuItem("关于")
}
};
3.3.“文件”菜单的事件监听
ActionListeneraction=newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname=e.getActionCommand();
JMenuItemMI=(JMenuItem)e.getSource();
if("新建".equals(name)){
content.setText("");
file=null;
}elseif("打开".equals(name)){
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showOpenDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
unfold();
}
}elseif("保存".equals(name)){
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showSaveDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
saving();
}
}elseif("退出".equals(name)){
mynotepadf=newmynotepad();
ints=JOptionPane.showConfirmDialog(f,"退出?
","退出",JOptionPane.YES_NO_OPTION);
3.4.“编辑”菜单的事件监听
elseif("剪切".equals(name)){
content.cut();
}elseif("复制".equals(name)){
content.copy();
}elseif("粘贴".equals(name)){
content.paste();
}elseif("颜色".equals(name)){
color=JColorChooser.showDialog(mynotepad.this,"",color);
content.setForeground(color);
3.5.异常处理
在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。
本程序中选用的异常处理机制是try,catch。
捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。
saving(){
try{
FileWriterWritef=newFileWriter(file);
Writef.write(content.getText());
Writef.close();
}
catch(Exceptione){e.printStackTrace();}
}
voidunfold(){
try{
FileReaderReadf=newFileReader(file);
intlen=(int)file.length();
char[]buffer=newchar[len];
Readf.read(buffer,0,len);
Readf.close();
content.setText(newString(buffer));
}catch(Exceptione){e.printStackTrace();}
}
4.测试分析
图4:
点击“文件”运行情况
图5:
“文件”菜单中的“打开”对话框
图6:
“编辑”中的“颜色”设置功能
图7:
“关于”对话框
5.源程序清单
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
classmynotepadextendsJFrame{
Filefile=null;
Colorcolor=Color.red;
mynotepad(){
initTextContent();………………………………………………//初始化组件
initMenu();
initAboutDialog();
}
voidinitTextContent(){
getContentPane().add(newJScrollPane(content));……//滚动面板对象
}
JTextPanecontent=newJTextPane();……………………/创建/内容输入区
JFileChooseropenfile=newJFileChooser();………………//创建打开文件对话框
JColorChooseropencolor=newJColorChooser();…………//颜色选择
JDialogabout=newJDialog(this);…………………………//关于对话框
JMenuBarmenu=newJMenuBar();………………………//创建菜单栏
//菜单栏的各个菜单项
JMenu[]menus=newJMenu[]{
newJMenu("文件"),
newJMenu("编辑"),
newJMenu("关于")
};
//“文件”菜单项的四个下拉菜单
JMenuItemoptionofmenu[][]=newJMenuItem[][]{{
newJMenuItem("新建"),
newJMenuItem("打开"),
newJMenuItem("保存"),
newJMenuItem("退出")
},
//编辑菜单的四个下拉菜单
{
newJMenuItem("复制"),
newJMenuItem("剪切"),
newJMenuItem("粘贴"),
newJMenuItem("颜色")
},
{
newJMenuItem("关于")
}
};
voidinitMenu(){
for(inti=0;imenu.add(menus[i]);
for(intj=0;jmenus[i].add(optionofmenu[i][j]);
optionofmenu[i][j].addActionListener(action);
}
}
this.setJMenuBar(menu);
}
ActionListeneraction=newActionListener(){//添加事件监听
publicvoidactionPerformed(ActionEvente){
Stringname=e.getActionCommand();
JMenuItemMI=(JMenuItem)e.getSource();
if("新建".equals(name)){……………………………………//监听“新建”事件
content.setText("");
file=null;
}elseif("打开".equals(name)){………………………………//监听“打开”事件
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showOpenDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();………………//打开选择文件
unfold();
}
}elseif("保存".equals(name)){………………………………//监听“保存”事件
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showSaveDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
saving();
}
}elseif("退出".equals(name)){
mynotepadf=newmynotepad();
ints=JOptionPane.showConfirmDialog(f,"退出?
","退出",JOptionPane.YES_NO_OPTION);…………………………//提示用户是否退出
if(s==JOptionPane.YES_OPTION)
System.exit(0);
}elseif("剪切".equals(name)){………………………………//监听“剪切”事件
content.cut();
}elseif("复制".equals(name)){………………………………//监听“复制”事件
content.copy();
}elseif("粘贴".equals(name)){………………………………//监听“粘贴”事件
content.paste();
}elseif("颜色".equals(name)){………………………………//监听“颜色”事件
color=JColorChooser.showDialog(mynotepad.this,"",color);
content.setForeground(color);……………………………//对颜色进行设置
}elseif("关于".equals(name)){
about.setSize(300,150);…………………//设置“关于”对话框大小为300×150
about.show();…………………………//显示“关于”对话框
}
}
};
voidsaving(){
try{
FileWriterWritef=newFileWriter(file);………………//创建文件写入器
Writef.write(content.getText());
Writef.close();
}
catch(Exceptione){e.printStackTrace();}
}
voidunfold(){
try{
FileReaderReadf=newFileReader(file);…………//文件读入
intlen=(int)file.length();
char[]buffer=newchar[len];
Readf.read(buffer,0,len);
Readf.close();
content.setText(newString(buffer));
}catch(Exceptione){e.printStackTrace();}
}
voidinitAboutDialog(){
about.setLayout(newGridLayout(3,1));……………//将“关于”对话框设置为3行1列
about.getContentPane().setBackground(Color.white);//设置对话框背景色
about.getContentPane().add(newJLabel("我的记事本程序"));//对话框内容
about.getContentPane().add(newJLabel("制作者:
蒋生彪"));
about.getContentPane().add(newJLabel("2009年12月"));
about.setModal(true);//设置对话框前端显示
about.setSize(100,100);
about.setLocation(250,170);//设置对话框显示位置
}
;
}
publicclassNotepad{
publicstaticvoidmain(Stringargs[]){//入口main函数
mynotepadnoted=newmynotepad();
noted.addWindowListener(newWindowAdapter(){
});
noted.setTitle("我的记事本程序");//记事本标题
noted.setSize(640,320);//设置记事本大小
noted.show();
noted.setLocation(150,100);//设置记事本显示位置
}
}
6.课程设计体会
经过差不多1个月的努力,基本上完成我的Java课程设计—简单的记事本程序,也基本上实现了我在需求分析时所预期的功能。
通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。
同时,做这门课程设计也进一步加强了我的动手能力。
为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。
在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。
但是,设计过程中也存在一些问题,本来一开始想给这个记事本程序加上一张背景图片,以及添加字体设置功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。
7.致谢
最后要感谢陕西师范大学网络教育学院的老师们,虽然不能亲自得到他们的指导,但在网络的帮助下,我聆听了他们的认真而详细的讲解。
给了我很大的帮助,所以我衷心感谢网络教育学院的老师们!
参考文献
[1].曾令明索望甘刚宋波,Java程序设计教程,西安电子科技大学出版社,2007.8
[2].孙全党王吴迪赵枫朝,Java程序设计应用教程,电子工业出版社,2006.2
[3].赵玉阳,Java从入门到精通,清华大学出版社,2006.8
[4].李茏怡,Java编程实例讲解,高等教育出版社,2005.11