JAVA记事本课程设计报告.docx
- 文档编号:22793759
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:16
- 大小:188.02KB
JAVA记事本课程设计报告.docx
《JAVA记事本课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA记事本课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
JAVA记事本课程设计报告
计算机与信息工程系
《Java课程设计》报告
专业计算机与信息工程系
班级
学号
姓名
报告完成日期2011-6-10
指导教师
评语:
成绩:
批阅教师签名:
批阅时间:
Java记事本
一、设计任务与目标
这次课程设计我选择了做一个Java简易记事本。
记事本也是一个比较熟悉的题目,以前也做过类似的例题,感觉这样比较容易下手,同时也想通过这个题目来使自己更好的掌握Java的面向对象基本编程的技术和方法,把Java这门课所学的内容融会贯通,学会Java设计程序、开发应用软件的基本能力。
对于记事本的设计目标如下:
(1)实现基本的文本编辑功能:
新建、打开和保存文件、复制和粘贴文本。
能够改变文本字体大小,颜色。
(2)具有主菜单和弹出式菜单。
(3)要求界面美观、功能布局合理。
二、设计思路
首先设计记事本要考虑到图形界面设计,图形界面主要包括两大块:
菜单的设计和可编辑文本域的设计。
设计菜单时要先先添加菜单栏,再添加菜单,最后才是菜单项。
设计可编辑文本域时,考虑到以后编程的方便性,所以使用了JtextArea组件,但应将其放入一个滚动条JscrollPane对象中去。
接下来就是编写各菜单项所要响应的事件了,由于字体设置比较麻烦些,所以又单独编写了一个FontSet类来专门设置字体。
三、具体实现
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
//创建主类JiShiBen
publicclassJiShiBenextendsWindowAdapterimplementsActionListener,MouseListener{
Framef;
MenuBarmenubar;//菜单条对象
JTextAreata;
JScrollPanesp;//滚动条对象
FileDialogfd;//文件对话框
PopupMenupm;//弹出式菜单
publicJiShiBen(){
f=newFrame("简易记事本");
f.setBounds(200,200,400,360);//设置窗体的初始大小和在屏
//幕上显示的位置
f.setVisible(true);
f.addWindowListener(this);//注册窗体监听器
menubar=newMenuBar();
Menufile=newMenu("文件");//创建菜单
Menuedit=newMenu("编辑");
Menuformat=newMenu("格式");
Menuhelp=newMenu("关于");
f.setMenuBar(menubar);//把整个菜单系统显示在窗口中
menubar.add(file);
menubar.add(edit);
menubar.add(format);
menubar.add(help);
MenuItemfile1=newMenuItem("新建...");//创建菜单项
MenuItemfile2=newMenuItem("打开...");
MenuItemfile3=newMenuItem("保存");
MenuItemfile4=newMenuItem("关闭");
file.add(file1);
file.add(file2);
file.add(file3);
file.addSeparator();//分割线
file.add(file4);
MenuItemedit1=newMenuItem("复制");
MenuItemedit2=newMenuItem("粘贴");
MenuItemedit3=newMenuItem("剪切");
MenuItemedit4=newMenuItem("全选");
edit.add(edit4);
edit.addSeparator();
edit.add(edit1);
edit.add(edit2);
edit.add(edit3);
MenuItemformat1=newMenuItem("字体...");
MenuItemformat2=newMenuItem("颜色...");
format.add(format1);
format.add(format2);
MenuItemhelp1=newMenuItem("帮助主题(H)");
MenuItemhelp2=newMenuItem("关于记事本(A)");
help.add(help1);
help.addSeparator();
help.add(help2);
ta=newJTextArea();
file1.addActionListener(this);//给各菜单项注册监听器
file2.addActionListener(this);
file3.addActionListener(this);
file4.addActionListener(this);
edit1.addActionListener(this);
edit2.addActionListener(this);
edit3.addActionListener(this);
edit4.addActionListener(this);
format1.addActionListener(this);
format2.addActionListener(this);
help1.addActionListener(this);
help2.addActionListener(this);
fd=newFileDialog(f,"打开文件对话框");
sp=newJScrollPane(ta);
f.add(sp);
pm=newPopupMenu();
f.add(pm);
MenuItempm_edit1=newMenuItem("复制");//创建弹出式菜单项
MenuItempm_edit2=newMenuItem("粘贴");
MenuItempm_edit3=newMenuItem("剪切");
MenuItempm_edit4=newMenuItem("全选");
MenuItempm_format1=newMenuItem("字体...");
MenuItempm_format2=newMenuItem("颜色...");
pm.add(pm_edit4);
pm.addSeparator();
pm.add(pm_edit1);
pm.add(pm_edit2);
pm.add(pm_edit3);
pm.addSeparator();
pm.add(pm_format1);
pm.add(pm_format2);
pm_edit1.addActionListener(this);
pm_edit2.addActionListener(this);
pm_edit3.addActionListener(this);
pm_edit4.addActionListener(this);
pm_format1.addActionListener(this);
pm_format2.addActionListener(this);
ta.addMouseListener(this);
}
//实现ActionListener的方法,编写各菜单项的功能
publicvoidactionPerformed(ActionEvente){
//------------新建菜单
if(e.getActionCommand().equals("新建...")){
ta.setText("");
}
//------------打开文件
elseif(e.getActionCommand().equals("打开...")){
fd.setVisible(true);
try
{
Filefile=newFile(fd.getDirectory(),fd.getFile());
FileReaderfr=newFileReader(file);
BufferedReaderbr=newBufferedReader(fr);
Stringstr;
while((str=br.readLine())!
=null)
{
ta.setText(ta.getText()+str+"\n");
}
br.close();
fr.close();
}
catch(Exceptionee)
{
ee.printStackTrace();
}
}
//-----------------保存文件
elseif(e.getActionCommand().equals("保存")){
fd.setVisible(true);
try
{
Filefile=newFile(fd.getDirectory(),fd.getFile());
FileWriterfw=newFileWriter(file);
fw.write(ta.getText());
fw.close();
}
catch(Exceptionee)
{
ee.printStackTrace();
}
}
//-----------------关闭菜单
elseif(e.getActionCommand().equals("关闭")){
System.exit(0);
}
//-----------------利用Swing组件自带的全选、复制、剪切、//粘贴功能
elseif(e.getActionCommand().equals("复制")){ta.copy();}
elseif(e.getActionCommand().equals("粘贴")){ta.paste();}
elseif(e.getActionCommand().equals("剪切")){ta.cut();}
elseif(e.getActionCommand().equals("全选")){ta.selectAll();}
//-----------------通过创建一个FontSet对象来实现字体设//-----------------置功能
elseif(e.getActionCommand().equals("字体...")){
newFontSet();
}
//调用Swing组件自带的颜色设置对话框
elseif(e.getActionCommand().equals("颜色...")){
ta.setForeground(JColorChooser.showDialog(f,"",Color.green));
}
elseif(e.getActionCommand().equals("帮助主题(H)")){}
elseif(e.getActionCommand().equals("关于记事本(A)")){
JOptionPane.showMessageDialog(f,"计算机与信息工程系\n123456789\n张三\n\n2011年6月8日","关于记事本",1);
}
}
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
//实现MouseListener接口的各方法
publicvoidmouseReleased(MouseEvente){
if(e.isPopupTrigger())
pm.show(f,e.getX()+10,e.getY()+40);
}
publicvoidmouseClicked(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmousePressed(MouseEvente){}
//单独创建字体类,实现字体设置功能
classFontSetextendsFrameimplementsActionListener,WindowListener{
Choicefont,size,bolder;//下拉列表框
Buttonb1,b2;
Panelp;
publicFontSet(){
setTitle("字体对话框");
font=newChoice();
bolder=newChoice();
size=newChoice();
b1=newButton("确定");
b2=newButton("取消");
b1.addActionListener(this);//注册监听器
b2.addActionListener(this);
p=newPanel();
p.add(b1);
p.add(b2);
//为下拉列表添加下拉选项
font.addItem("宋体");//添加字体
font.addItem("隶书");
font.addItem("楷体");
font.addItem("幼圆");
font.addItem("华文彩云");
for(inti=9;i<=30;i+=2){//添加字号
size.addItem(String.valueOf(i));
}
bolder.addItem("普通");//添加字型
bolder.addItem("黑体");
bolder.addItem("斜体");
setLayout(newGridLayout(7,1));
add(newLabel("请选择字体:
"));
add(font);
add(newLabel("请选择大小:
"));
add(size);
add(newLabel("请选择字型:
"));
add(bolder);
add(p);
setBounds(250,270,250,220);
setVisible(true);
addWindowListener(this);
}
//按照字型不同分3种情况来对字体进行设置
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand().equals("确定")){
inttemp1=Integer.parseInt(size.getSelectedItem());
Stringtemp2=font.getSelectedItem();
if(bolder.getSelectedItem().equals("普通")){
Fonttemp=newFont(temp2,Font.PLAIN,temp1);
ta.setFont(temp);
dispose();}
if(bolder.getSelectedItem().equals("黑体")){
Fonttemp=newFont(temp2,Font.BOLD,temp1);
ta.setFont(temp);
dispose();}
if(bolder.getSelectedItem().equals("斜体")){
Fonttemp=newFont(temp2,Font.ITALIC,temp1);
ta.setFont(temp);
dispose();}
}
elseif(e.getActionCommand().equals("取消")){dispose();}
}
publicvoidwindowActivated(WindowEvente){}
publicvoidwindowClosed(WindowEvente){}
publicvoidwindowDeactivated(WindowEvente){}
publicvoidwindowDeiconified(WindowEvente){}
publicvoidwindowIconified(WindowEvente){}
publicvoidwindowOpened(WindowEvente){}
publicvoidwindowClosing(WindowEvente){dispose();
}
}
publicstaticvoidmain(String[]args){//主方法
JiShiBena=newJiShiBen();
}
}
四、程序运行的测试与分析
打开文件后的记事本:
调用Window自带的打开对话框:
字体对话框和关于记事本消息对话框:
颜色设置对话框:
改变字体、字号、字型、颜色后的效果:
字型框话框we-----------------_____________________________________________________________________________________
五、总结
这次Java课程设计我选择的题目是Java简易记事本,由于记事本界面简单,自己也做过类似的例题,感觉还是很容易上手的,但到该为每个菜单项编写事件代码时发现也并不是自己先前想象的那么简单。
当中遇到了不少问题,但在查阅资料和其他同学共同探讨的过程中还是找到了一些解决问题的办法,最终还是比较顺利的完成了这次课程设计。
在这次课程设计中我发现了自己对Java还是了解太少,很多东西是自己没见过的当然也就无从谈起应用了。
在使用Swing组件时,发现很多东西都只需调用类库自带的一些方法便可完成复杂的操作,如全选、复制、粘贴和剪切等功能。
但是开始时并不知道,还在使用Awt组件,这给编程带来了很大麻烦,也耽误了不少时间。
不过经过这次课程设计我也真正的体会到了Swing组件的强大功能,
给自己敲响了警钟,也避免了自己在以后的编程中走更多的弯路,这也是我在这次课程设计中的一点收获。
另外在这次课程设计中我还学会了Java编写程序的思路,就是为各个功能编写类并在其对应的响应事件中创建一个这个类的对象即可。
这样就使程序的结构很清晰,依据功能分割为不同的类模块,感觉Java语言结构确实很清晰。
当然对于一些很容易实现的功能就无需再为其编写单独的类,感觉那样只会使程序变得更复杂,更不容易阅读。
在这次课程设计的Java记事本中,我就之编写了两个类,一个主类JiShiBen类和一个字体类FontSet类,这样结构就很清晰,也便于阅读。
在这次课程设计中,我还体会到编写程序并不能只是关心程序的运行结果,更要注重程序代码的结构,编程者更要有认真严谨态度。
特别是在Java中的类和各种各样的方法体都是用大括号括起来的,这样如果不注意细节,一旦多或少了一个大括号是很难发现的。
在这次课程设计中还培养了我的动手能力和设计程序、开发应用软件的基本能力。
每次课程设计项目都会使我学到很多东西,也使我对编程有了一个更清晰的认识,熟悉了软件的开发流程,为我以后的编程道路奠定了坚实的基础。
当然我也知道以后的学习道路还有很长很长,所以我要不断学习新的知识,让自己在计算机编程方面有进一步的发展。
六、参考资料
[1]胡伏湘.Java程序设计实用教程(第2版).北京:
清华大学出版社,2009
[2]叶核亚.Java程序设计实用教程(第3版).北京:
电子工业出版社,2010
[3]耿详义.Java课程设计(第1版).北京:
清华大学出版社,2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 记事本 课程设计 报告