华北科技学院Java程序设计B实验报告.docx
- 文档编号:7362257
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:15
- 大小:72.20KB
华北科技学院Java程序设计B实验报告.docx
《华北科技学院Java程序设计B实验报告.docx》由会员分享,可在线阅读,更多相关《华北科技学院Java程序设计B实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
华北科技学院Java程序设计B实验报告
华北科技学院计算机系综合性实验
实验报告
课程名称Java程序设计B
实验学期2011至2012学年第1学期
学生所在系部计算机学院
年级专业班级
学生姓名学号
任课教师
实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:
封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、教师应该填写的内容包括:
实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。
《Java程序设计B》课程综合性实验报告
开课实验室:
基础实验室2011年11月16日
实验题目
简易写字板软件设计
一、实验目的
通过编写Java的应用系统综合实例——简易写字板软件,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。
1.熟悉在集成开发环境下编写Java程序。
2.掌握Java语言的程序设计方法。
3.掌握基于Swing图形用户界面设计的思想。
4.理论联系实际,提高软件开发技术。
5.培养学生分析,解决问题的能力。
二、设备与环境
硬件:
多媒体计算机
软件:
Windows2000以上的操作系统、JDK开发包、集成开发环境
三、实验内容
总体要求:
程序功能基本完成,用户界面友好,代码的可维护性和可扩展性较好,最好包括必要的注释和相应的文档。
具体要求:
基本的文本录入,字符修改,删除,换行,粘贴,复制,剪切等功能,主要包括:
1.菜单栏设计及功能实现:
菜单栏主要包括文件、编辑、格式、帮助等常见菜单。
其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有剪切、复制、粘贴、等功能;格式菜单含有对文字字体、字型、字号及颜色等的设置功能,根据情况可在编辑菜单添加查找和查找替换功能。
2.编辑区设计:
对文本的编辑处理区。
3.工具栏设计:
可根据需要增加该项功能。
4.其他功能设计。
四、实验结果及分析
1.主界面的设计与实现
①整个界面共包括3部分
分为:
菜单栏、工具栏和及文本编辑区
如图1所示:
②菜单的设计
本程序共设计3个菜单,分别是文件菜单、编辑菜单和窗口菜单
1、文件菜单实现了打开、保存、另存为、关闭功能。
2、编辑菜单实现了粘贴、复制、剪切功能。
3、窗口菜单实现了平铺、折叠功能。
各个菜单的功能
如图2所示:
③工具栏的设计
快捷按钮实现了文件的打开、保存、另存为
如图3所示:
②编辑区设计
编辑区采用初始化为(500,500)大小的显示区域
实现了在文本区域鼠标右击弹出快捷菜单的功能
如图4所示:
2.文件菜单中各项功能的实现
①软件初始设计
publicclassnoteextendsJFrameimplementsActionListener,MouseListener{
privatestaticfinallongserialVersionUID=1L;
Filefile=newFile("./");
JTextAreajta=newJTextArea();
Stringfilename;
JFileChooserjFileChooser=newJFileChooser();
JColorChooserjcolor=newJColorChooser();
JMenuBarmbar;
JMenuMf,fm1,fm2;
JMenuItemMfda,Mfbc,Mflcw,Mfgb;
JMenuItemzt,fz,jq,pp,zd;
JToolBartoolbar;
JButtont1,t2,t3;
ImageIconimg1,img2,img3;
JPopupMenupop;
JMenuItemcopy,paste,cut;
publicnote(){
jFileChooser.setCurrentDirectory(newFile("."));
getContentPane().add(newJScrollPane(jta),BorderLayout.CENTER);
setTitle("文本文件阅读器");
mbar=newJMenuBar();
setJMenuBar(mbar);
Mf=newJMenu("文件(F)");
fm1=newJMenu("编辑(E)");
fm2=newJMenu("窗口(W)");
zt=newJMenuItem("粘贴(o)");
fz=newJMenuItem("复制");
jq=newJMenuItem("剪切");
fm1.add(zt);
fm1.add(fz);
fm1.add(jq);
zt.addActionListener(this);
fz.addActionListener(this);
jq.addActionListener(this);
pp=newJMenuItem("平铺");
zd=newJMenuItem("折叠");
fm2.add(pp);
fm2.add(zd);
pp.addActionListener(this);
zd.addActionListener(this);
Mfda=newJMenuItem("打开(o)");
Mfbc=newJMenuItem("保存");
Mflcw=newJMenuItem("另存为");
Mfgb=newJMenuItem("关闭");
Mf.add(Mfda);
Mf.add(Mfbc);
Mf.add(Mflcw);
Mf.add(Mfgb);
Mfda.addActionListener(this);
Mfbc.addActionListener(this);
Mflcw.addActionListener(this);
Mfgb.addActionListener(this);
Mf.setMnemonic('F');
Mfda.setMnemonic('o');
mbar.add(Mf);
mbar.add(fm1);
mbar.add(fm2);
toolbar=newJToolBar("浮动工具栏");
t1=newJButton();
t2=newJButton();
t3=newJButton();
img1=newImageIcon("d:
\\p1.jpg");
img2=newImageIcon("./p2.jpg");
img3=newImageIcon("./p3.jpg");
t1.setIcon(img1);
t2.setIcon(img2);
t3.setIcon(img3);
t1.setToolTipText("打开");
t2.setToolTipText("保存");
t3.setToolTipText("另存为");
toolbar.add(t1);
toolbar.add(t2);
toolbar.add(t3);
add(toolbar,BorderLayout.NORTH);
t1.addActionListener(this);//加入工具栏操作事件的初始
t2.addActionListener(this);
t3.addActionListener(this);
pop=newJPopupMenu();
copy=newJMenuItem("复制");
cut=newJMenuItem("剪切");
paste=newJMenuItem("粘贴");
pop.add(copy);
pop.add(cut);
pop.add(paste);
jta.addMouseListener(this);
cut.addActionListener(this);//加入菜单编辑操作事件的初始
copy.addActionListener(this);
paste.addActionListener(this);
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
②菜单及鼠标实现
publicvoidactionPerformed(ActionEvente){//在源代码的基础上加入了其他
if(e.getSource()==Mfda||e.getSource()==t1)//操作的代码
open();
if(e.getSource()==Mfbc||e.getSource()==t2)
save();
if(e.getSource()==Mflcw||e.getSource()==t3)
saveto();
elseif(e.getSource()==copy||e.getSource()==fz)
jta.copy();
elseif(e.getSource()==cut||e.getSource()==jq)
jta.cut();
elseif(e.getSource()==paste||e.getSource()==zt)
jta.paste();
elseif(e.getSource()==Mfgb)
System.exit(0);
}
③打开的实现
privatevoidopen(){
if(jFileChooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){
file=jFileChooser.getSelectedFile();
filename=file.getName();
try{
FileInputStreamfin=newFileInputStream(file);
BufferedInputStreamin=newBufferedInputStream(fin);
byte[]b=newbyte[in.available()];
in.read(b,0,b.length);
jta.setText(newString(b,0,b.length));
in.close();
}
catch(IOExceptionex){
jta.setText("打开文件错误"+file.getName());
}
}
}
④另存为的实现
privatevoidsaveto(){
if(jFileChooser.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){
file=jFileChooser.getSelectedFile();
try{
FileOutputStreamfos=newFileOutputStream(file);
BufferedOutputStreamout=newBufferedOutputStream(fos);
Stringstr=jta.getText();
byteb[]=str.getBytes();
out.write(b);
out.close();
}
catch(IOExceptionex){
jta.setText("打开文件错误"+file.getName());
}
}
}
⑤保存的实现
privatevoidsave(){
if(!
file.getName().equals(".")){//加入首次打开文件名判断代码
try{
FileOutputStreamfos=newFileOutputStream(file);
BufferedOutputStreamout=newBufferedOutputStream(fos);
Stringstr=jta.getText();
byteb[]=str.getBytes();
out.write(b);
out.close();
}
catch(IOExceptionex){
jta.setText("打开文件错误"+file.getName());
}
}
else{//如果是首次直接打开软件,在空白情况下点“保存”则另存该文件
saveto();
}
}
⑥程序入口实现
publicstaticvoidmain(String[]args){
newnote();
}
publicvoidmouseClicked(MouseEvente){
}
⑦isCanCopy的实现
publicbooleanisCanCopy(){
booleanb=false;
intstart=jta.getSelectionStart();
intend=jta.getSelectionEnd();
if(start!
=end)
b=true;
returnb;
}
⑧isClipboard的实现
publicbooleanisClipboardString(){
booleanb=false;
Clipboardclipboard=jta.getToolkit().getSystemClipboard();
Transferablecontent=clipboard.getContents(this);
try{
if(content.getTransferData(DataFlavor.stringFlavor)instanceofString){
b=true;
}
}
catch(Exceptione){
}
returnb;
}
⑨鼠标点击的实现
publicvoidmousePressed(MouseEvente){
if(e.getButton()==MouseEvent.BUTTON3){
copy.setEnabled(isCanCopy());
paste.setEnabled(isClipboardString());
cut.setEnabled(isCanCopy());
pop.show(e.getComponent(),e.getX(),e.getY());//右击鼠标快捷菜单问
}//题代码修改
}
publicvoidmouseReleased(MouseEvente){
}
publicvoidmouseEntered(MouseEvente){
}
publicvoidmouseExited(MouseEvente){
}
}
2.遇到的问题和解决办法
问题①:
编辑菜单和工具栏功能无效
解决办法:
note函数中加入编辑菜单及工具栏各项的事件的初始,并在actionPerf
ormed函数中添加了判断操作的代码
问题②:
首次直接打开软件点保存错误
解决办法:
note类中文件变量初始语句Filefile;语句改为Filefile=newFile
("./");这样软件首次打开后文件名会初始默认为".",再在save函数中加入了判断文件名是否为"."的代码,如果为"."则另存文件
问题③:
当打开文件内容显示超过界面时,右击鼠标快捷菜单显示位置不对应
解决办法:
将函数mousePressed中得pop.show(this,e.getX(),e.getY());改为pop.show(e.getComponent(),e.getX(),e.getY());不以this为参照位置,以鼠标为参照位置
教师评价
评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
其他:
评价教师签名:
2011年11月26日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北 科技学院 Java 程序设计 实验 报告