记事本实验报告.docx
《记事本实验报告.docx》由会员分享,可在线阅读,更多相关《记事本实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
记事本实验报告
华北科技学院计算机系综合性实验
实验报告
课程名称Java程序设计B
实验学期2011至2012学年第1学期
学生所在系部计算机学院
年级2009专业班级网络B093
学生姓名邓新龙学号200907024311
任课教师李芙玲
实验成绩
计算机系制
《Java程序设计B》课程综合性实验报告
开课实验室:
基础实验室2011年11月16日
实验题目
简易写字板软件设计
一、实验目的
通过编写Java的应用系统综合实例——简易写字板软件,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。
熟悉在集成开发环境下编写Java程序。
二、设备与环境
硬件:
多媒体计算机
软件:
Windows2000以上的操作系统、JDK开发包、集成开发环境
三、实验内容
总体要求:
程序功能基本完成,用户界面友好,代码的可维护性和可扩展性较好,最好包括必要的注释和相应的文档。
具体要求:
基本的文本录入,字符修改,删除,换行,粘贴,复制,剪切等功能,主要包括:
1.菜单栏设计及功能实现:
菜单栏主要包括文件、编辑、格式、帮助等常见菜单。
其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有剪切、复制、粘贴、等功能;格式菜单含有对文字字体、字型、字号及颜色等的设置功能,根据情况可在编辑菜单添加查找和查找替换功能。
2.编辑区设计:
对文本的编辑处理区。
3.工具栏设计:
可根据需要增加该项功能。
4.其他功能设计。
四、实验结果及分析
1、主界面的设计与实现
界面布局:
边界布局的北边嵌套了三行一列的网格布局,每个网格中使用了一个中间容器JPANEL面板(使用默认的流式布局)。
第一个面板中放了一个菜单条,第二个面板中放了两个按钮,第三个面板中放了三个下拉列表和三个按钮。
边界布局的南边是文本编辑区域,占界面的主要部分。
界面组件:
一个菜单条,包括文件、编辑、查看、插入、格式、帮助等菜单;
五个按钮,包括保存、新建、颜色、加粗、倾斜;
三个下拉列表,包括字体、字号、中西文;
一个文本域,文字编辑区域。
界面效果图:
2、菜单设计
1 文件菜单
包括:
新建、打开、保存、另存为、退出等菜单项
功能:
新建,打开,保存,另存为txt文件
。
退出记事本
2 编辑菜单
包括:
撤销、剪切、复制、粘贴、查找、查找下一个、替换、删除等菜单项
功能:
编辑文字,剪切、复制、粘贴文字
查找、查找下一个相同字符
替换字符;
删除选定字符
3 查看菜单
包括:
工具栏、格式栏、状态栏等菜单项
功能:
没有触发事件,只是界面需要
4 插入菜单
包括:
日期和时间、对象等菜单项
功能:
插入当时时间,格式是yyyy-MM-ddHH:
mm:
ss
5 格式菜单
包括:
字体、段落等菜单项
功能:
没有触发事件,只是界面需要
6 帮助菜单
包括:
关于主体、关于记事本等菜单项
功能:
弹出消息对话框,简介记事本功能
3、编辑区设置
1 编辑区占整个窗体的三分之二,并且放置在滚动窗格中,而且设置了自动换行功能,消除了水平滚动条。
2 添加了鼠标事件——弹出式菜单,其中包括撤销、剪切、复制、粘贴、删除等菜单项。
3 添加了键盘事件,只要接收到回车字符就会在光标处追加\r,这样便于文件输出时能有换行效果。
4、文件菜单中各项功能及关键代码
1 新建
功能:
如果文本有改动并且没有保存则弹出确认对话框是否保存文件,否则清空文本域,改变窗体标题为“无标题-记事本”。
代码:
if(!
(w.text.getText()).equals("")&&w.n==0){
intn=JOptionPane.showConfirmDialog(null,"是否保存文件?
","确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION){
save.actionPerformed(null);
w.text.setText(null);
w.setTitle("无标题-记事本");
w.n=0;
w.exist=0;
}
elseif(n==JOptionPane.NO_OPTION){
w.text.setText(null);
w.setTitle("无标题-记事本");
w.n=0;
w.exist=0;
}
elseif(n==JOptionPane.CANCEL_OPTION){
}
}
else{
w.text.setText(null);
w.setTitle("无标题-记事本");
w.n=0;
w.exist=0;
}
}
}
2 保存
功能:
如果文件已经存在,则保存在此文件,否则调用另存为功能。
代码:
if(w.exist==0){
w.save.actionPerformed(null);
}
elseif(w.exist==1){
try{Filefile1=w.file;
FileWriterwritefile=newFileWriter(file1);
writefile.write(w.text.getText());
writefile.close();
w.n=1;
}
catch(IOExceptionee){}
}
3 另存为
功能:
弹出文件对话框,选择存储路径,更改文件名,保存文件。
代码:
JFileChooserfileChooser=newJFileChooser("c:
/");
intn=fileChooser.showSaveDialog(null);
if(n==JFileChooser.APPROVE_OPTION){
Filefile1=fileChooser.getSelectedFile();
w.file=file1;
try{//FileWriterwritefile=newFileWriter(file1);
BufferedWriterwritefile=newBufferedWriter(newFileWriter(file1));
writefile.write(w.text.getText());
w.setTitle(file1.getName());
writefile.close();
w.n=1;
w.exist=1;
}
catch(IOExceptionee){}
}
4 打开
功能:
如果文本有改动并且没有保存则弹出确认对话框是否保存文件,否则弹出文件对话框,选择要打开的文件。
按行读取文件到文本域,追加\n换行,设置窗体标题为读取的文件名。
代码:
w.text.setText(null);
JFileChooserfileChooser=newJFileChooser("c:
/");
intn=fileChooser.showOpenDialog(null);
if(n==JFileChooser.APPROVE_OPTION){
Filefile=fileChooser.getSelectedFile();
w.file=file;
try{FileReaderreadfile=newFileReader(file);
BufferedReaderin=newBufferedReader(readfile);
Strings=null;
while((s=in.readLine())!
=null)
w.text.append(s+"\n");
readfile.close();
in.close();
w.exist=1;
w.setTitle(file.getName());
}
catch(IOExceptionee){}
}
5 退出
功能:
如果文本有改动并且没有保存则弹出确认对话框是否保存文件,否则退出程序。
代码:
if(!
(w.text.getText()).equals("")&&w.n==0&&w.exist==0){
intn=JOptionPane.showConfirmDialog(null,"是否保存文件?
","确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION){
w.save.actionPerformed(null);
System.exit(0);
}
elseif(n==JOptionPane.NO_OPTION)
System.exit(0);
elseif(n==JOptionPane.CANCEL_OPTION){
}
else{
System.exit(0);
}
}
5、其他功能运行效果图
1 字体设置
2 字体大小设置
3 字体颜色设置
4 字体加粗、倾斜设置
5 查找对话框
6 替换对话框
7 查找错误消息框
8 关于记事本消息框
6、收获体会
本次实验主要练习了基于SWING的图形用户界面设计,发生在组件上的界面事件的处理和文件的新建、输入、输出。
要想做出一个界面美观、简洁的记事本窗体必须要仔细考虑布局设计,还要考虑各种组件的配合使用,然后调试参数使界面达到一个合理、大方的比例。
我的记事本采用了多种布局方法,嵌套使用,包括边界布局、网格布局、流式布局,其中还增加了中间容器JPanel面板使界面更加整齐、美观。
组件方面,我使用了菜单组件、文本组件、按钮与标签组件、列表组件。
菜单条中的各种菜单项包括了程序的大部分功能,几个按钮和下拉列表相当于快捷方式更加方便用户的操作。
最后精心设置各组件的大小参数,使界面达到理想的效果。
要想做出一个实用、稳定性强的记事本必须要仔细设计各个事件之间的逻辑关系,考虑事件处理的顺序,然后添加界面事件,最终通过测试达到稳定、准确处理事件的效果。
我的记事本在处理文件的保存和打开等事件时,定义了两个整型参数n、exist,n有0、1两种状态用来描述文件是否保存,exist有0、1两种状态用来描述文件是否存在,然后根据n和exist的值来处理文件新建、保存、另存为、打开等事件的逻辑关系。
而且,我还使用了窗口事件、鼠标事件、键盘事件使程序更加稳健实用。
在做字体的风格、大小和颜色等事件处理时,我通过上网和查询API学到了很多类和方法。
而且我把字体的颜色、加粗、倾斜设置做成了按钮,单击颜色按钮弹出颜色对话框进行颜色设置。
单击加粗或倾斜按钮后,按钮的颜色会发生变化方便用户直观把握字体属性的设置。
做查找和替换事件处理时,我另外做了一个窗体并设置了窗体大小不可调。
我把各项功能分别放在类中,然后在窗体类中监听、调用,这样很好的实现了程序的可维护性和可扩展性。
当需要增加新的功能时,只需新建类然后调用,不会影响其他功能的实现。
通过这次综合实验,自学了很多知识,虽然有些功能的代码时从网上找的,但我都把它理解、完善然后嵌入我的程序。
Java的学习关键在于掌握学习方法,遇到问题能自己解决,而不是在于记住了多少个类,写了多少行代码。
这是我这次综合实验的最大体会。
教师评价
评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
其他:
评价教师签名:
2011年11月26日