JAVA记事本课程设计.docx
《JAVA记事本课程设计.docx》由会员分享,可在线阅读,更多相关《JAVA记事本课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
JAVA记事本课程设计
JAVA记事本设计
摘要
该报告中的程序是使用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主要用来输入文本。
2.2模块说明图
图1
在图1中,首先创建一个名为jsb的类并继承JFrame类作为最底层的容器。
图2
2.3程序流程图
FalseFalse
truetruetruetruetruetruetrue
图3
3系统详细设计
1:
界面设计
创建一个下拉菜单和文本域,在文本域中显示编辑的文件信息。
f=newFrame(s);
p1=newTextArea("");
f.setSize(400,600);
f.setBackground(Color.white);
f.setVisible(true);
menubar=newMenuBar();
menu1=newMenu("文件");
menu2=newMenu("编辑");
menu3=newMenu("帮助");
item1=newMenuItem("新建");
item2=newMenuItem("打开");
item3=newMenuItem("保存");
item4=newMenuItem("另存为");
item5=newMenuItem("退出");
item6=newMenuItem("全选");
item7=newMenuItem("复制");
item8=newMenuItem("剪切");
item9=newMenuItem("粘贴");
item10=newMenuItem("关于");
menu1.add(item1);
menu1.add(item2);
menu1.add(item4);
menu1.add(item5);
menu2.add(item6);
menu2.add(item7);
menu2.add(item8);
menu2.add(item9);
menu3.add(item10);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
f.setMenuBar(menubar);
2:
功能设计
对每个菜单项进行注册监听。
点击不同菜单项时,显示不同界面。
主要代码
item1.addActionListener(this);
item2.addActionListener(this);
item3.addActionListener(this);
item4.addActionListener(this);
item5.addActionListener(this);
item6.addActionListener(this);
item7.addActionListener(this);
item8.addActionListener(this);
item9.addActionListener(this);
item10.addActionListener(this);
3:
菜单设计
部分菜单项的相关代码:
新建文件
if(e.getSource()==item1)
{if(i==0&&(ss.length()!
=0)){bc();}
else
p1.setText("");i=0;f.setTitle("文件对话框");}
打开文件
if(e.getSource()==item2)
{fd=newFileDialog(f,"打开文件",0);
fd.setVisible(true);
try{file=newFile(fd.getDirectory(),fd.getFile());
f.setTitle(fd.getFile()+"文件对话框");
FileReaderfr=newFileReader(file);
BufferedReaderbr=newBufferedReader(fr);
Stringline=null;
Stringview="";
while((line=br.readLine())!
=null)
{view+=line+"\n";}
p1.setText(view);
br.close();
fr.close();}
catch(IOExceptionexpIn)
{}}
复制文件
if(e.getSource()==item7)
{try{
Stringstr=p1.getSelectedText();
if(str.length()!
=0)
{strt=str;
}}catch(Exceptionex)
{}}
粘贴文件
if(e.getSource()==item9)
{if(strt.length()>0)
{p1.insert(strt,p1.getCaretPosition());
}
退出记事本
if(e.getSource()==item5)
{if(i==0&&(ss.length()!
=0))
{bc();}else{System.exit(0);}}
异常处理
在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。
本程序中选用的异常处理机制是try,catch。
捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。
try{
file=newFile(fd.getDirectory(),fd.getFile());
f.setTitle(fd.getFile()+"文件对话框");
FileReaderfr=newFileReader(file);
BufferedReaderbr=newBufferedReader(fr);
Stringline=null;
Stringview="";
while((line=br.readLine())!
=null)
{
view+=line+"\n";
}
p1.setText(view);
br.close();
fr.close();
}
catch(IOExceptionexpIn)
{}
}
if(e.getSource()==item3)
{
if(i==0)
{
bc();
}
else
{
try{
file=newFile(fd.getDirectory(),fd.getFile());
f.setTitle(fd.getFile()+"--记事本");
FileWriterfw=newFileWriter(file);
BufferedWriterbw=newBufferedWriter(fw);
Strings=p1.getText();
s=s.replaceAll("\n","\r\n");
bw.write(s);
bw.flush();
bw.close();
fw.close();
i=1;
}
catch(IOExceptionexpOut){i=0;}}}
4:
系统调试运行
1.菜单功能
打开:
帮助:
2.按钮功能
点击关闭按钮,显示
表示关闭成功.
5.源代码
importjava.awt.event.*;
importjava.awt.*;
importjava.io.*;
importjava.lang.String;
classjsbimplementsActionListener
{
Dialogbb;
Stringstrt;
inti;
FileDialogfd;
Filefile;
publicFramef;
publicTextAreap1;
publicMenuBarmenubar;
publicMenumenu1,menu2,menu3;
publicMenuItemitem1,item2,item3,item4,item5,item6,item7,item8,item9,item10;
jsb(Strings)
{i=0;
f=newFrame(s);
p1=newTextArea("");
f.setSize(500,500);
f.setBackground(Color.white);
f.setVisible(true);
menubar=newMenuBar();
menu1=newMenu("文件");
menu2=newMenu("编辑");
menu3=newMenu("帮助");
item1=newMenuItem("新建");
item2=newMenuItem("打开");
item3=newMenuItem("保存");
item4=newMenuItem("另存为");
item5=newMenuItem("退出");
item6=newMenuItem("全选");
item7=newMenuItem("复制");
item8=newMenuItem("剪切");
item9=newMenuItem("粘贴");
item10=newMenuItem("关于");
f.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{f.setVisible(false);System.exit(0);}
});
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.add(item5);
menu2.add(item6);
menu2.add(item7);
menu2.add(item8);
menu2.add(item9);
menu3.add(item10);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
f.setMenuBar(menubar);
item1.addActionListener(this);
item2.addActionListener(this);
item3.addActionListener(this);
item4.addActionListener(this);
item5.addActionListener(this);
item6.addActionListener(this);
item7.addActionListener(this);
item8.addActionListener(this);
item9.addActionListener(this);
item10.addActionListener(this);
f.setLayout(newGridLayout(1,1));
f.add(p1);f.pack();
}
publicvoidactionPerformed(ActionEvente)
{
Stringss;
ss=p1.getText().trim();
if(e.getSource()==item5)
{
if(i==0&&(ss.length()!
=0))
{
bc();
}
else
{
System.exit(0);
}
}
if(e.getSource()==item1)
{
if(i==0&&(ss.length()!
=0))
{
bc();
}
else
{
p1.setText("");i=0;f.setTitle("文件对话框");
}
}
if(e.getSource()==item2)
{
fd=newFileDialog(f,"打开文件",0);
fd.setVisible(true);
try{
file=newFile(fd.getDirectory(),fd.getFile());
f.setTitle(fd.getFile()+"文件对话框");
FileReaderfr=newFileReader(file);
BufferedReaderbr=newBufferedReader(fr);
Stringline=null;
Stringview="";
while((line=br.readLine())!
=null)
{
view+=line+"\n";
}
p1.setText(view);
br.close();
fr.close();
}
catch(IOExceptionexpIn)
{}
}
if(e.getSource()==item3)
{
if(i==0)
{
bc();
}
else
{
try{
file=newFile(fd.getDirectory(),fd.getFile());
f.setTitle(fd.getFile()+"--记事本");
FileWriterfw=newFileWriter(file);
BufferedWriterbw=newBufferedWriter(fw);
Strings=p1.getText();
s=s.replaceAll("\n","\r\n");
bw.write(s);
bw.flush();
bw.close();
fw.close();
i=1;
}
catch(IOExceptionexpOut){i=0;}
}
}
if(e.getSource()==item4)
{
bc();
}
if(e.getSource()==item10)
{
bb=newDialog(f,"关于");
Labell1=newLabel("版本:
1.0作者:
魏泽平");
bb.add(l1);
bb.setSize(250,150);
bb.setBackground(Color.white);
bb.show();
bb.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{bb.setVisible(false);bb.dispose();}
});
}
if(e.getSource()==item6)
{
p1.setSelectionStart(0);
p1.setSelectionEnd(p1.getText().length());
}
if(e.getSource()==item7)
{
try{
Stringstr=p1.getSelectedText();
if(str.length()!
=0)
{
strt=str;
}
}catch(Exceptionex)
{
}
}
if(e.getSource()==item8)
{
try{
Stringstr=p1.getSelectedText();
if(str.length()!
=0)
{
p1.replaceRange("",p1.getSelectionStart(),p1.getSelectionEnd());
}
}
catch(Exceptionex)
{
}
}
if(e.getSource()==item9)
{
if(strt.length()>0)
{
p1.insert(strt,p1.getCaretPosition());
}
}
}
publicvoidbc()
{
fd=newFileDialog(f,"保存文件",1);
fd.setVisible(true);
try{
file=newFile(fd.getDirectory(),fd.getFile());
f.setTitle(fd.getFile()+"--记事本");
FileWriterfw=newFileWriter(file);
BufferedWriterbw=newBufferedWriter(fw);
Strings=p1.getText();
s=s.replaceAll("\n","\r\n");
bw.write(s);
bw.flush();
bw.close();
fw.close();
i=1;
}
catch(IOExceptionexpOut){}
}
publicstaticvoidmain(Stringargs[])
{newjsb("记事本");}}
6.总结与思考
通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。
这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。
它还让我学会了在网上查阅那些无限的资料。
通过对此课题的开发,使我对jcreator开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。
由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。
对于文中出现的不足和系统中出现的问题敬请老师指导。
........忽略此处.......