JAVA综合实验报告.docx
- 文档编号:2604917
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:13
- 大小:130.66KB
JAVA综合实验报告.docx
《JAVA综合实验报告.docx》由会员分享,可在线阅读,更多相关《JAVA综合实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
JAVA综合实验报告
JAVA综合实验报告
计科二班
李亚飞(201108030226)
张秋缘(201108030248)
一、实验目的
(1)复习巩固本学期学到的知识,包括:
1、掌握面向对象编程的基本要素;
2、掌握JAVA语言常用类包及常用方法和JAVA基本语法;
3、掌握图形用户界面设计等;
(2)、运用以上知识设计自己的应用程序。
二、实验内容
结合本学期学到的知识设计一个记事本。
三、程序清单及运行结果
importjava.awt.*;
importjava.io.*;
importjava.io.File;
importjavax.swing.*;
importjava.awt.event.KeyEvent;
importjava.awt.event.InputEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.ActionEvent;
importjava.awt.event.KeyAdapter;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.JFileChooser;
importjavax.swing.JPopupMenu;
publicclassOurNote{
publicJFramef=newJFrame("我们的小记事本o((≧▽≦)o");
publicJMenuBarmb=newJMenuBar()
publicJMenueditMenu;
publicJMenufileMenu;
publicJMenuaboutMenu;
publicJMenuItemmenuAbout;
publicJMenuItemmenuOpen;
publicJMenuItemmenuSave;
publicJMenuItemmenuSaveAs;
publicJMenuItemmenuClose;
publicJMenuItemmenuCut;
publicJMenuItemmenuCopy;
publicJMenuItemmenuPaste;
JPopupMenupopUpMenu;
publicJTextAreatextArea;
//当前文件
publicFilemfile=null;
publicOurNote(){
//设置文件菜单和快捷键
JMenufileMenu=newJMenu("文件");
menuOpen=newJMenuItem("打开");
menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
menuSave=newJMenuItem("保存");
menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuSaveAs=newJMenuItem("另存为");
menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
InputEvent.CTRL_MASK));
menuClose=newJMenuItem("关闭");
menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
InputEvent.CTRL_MASK));
fileMenu.add(menuOpen);
fileMenu.addSeparator();//分隔线
fileMenu.add(menuSave);
fileMenu.add(menuSaveAs);
fileMenu.addSeparator();//分隔线
fileMenu.add(menuClose);
//设置编辑菜单和快捷键
editMenu=newJMenu("编辑");
menuCut=newJMenuItem("剪切");
menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
menuCopy=newJMenuItem("复制");
menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuPaste=newJMenuItem("粘贴");
menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
editMenu.add(menuCut);
editMenu.add(menuCopy);
editMenu.add(menuPaste);
//设置关于菜单
JMenuaboutMenu=newJMenu("关于");
menuAbout=newJMenuItem("关于我们的小记事本");
aboutMenu.add(menuAbout);
mb.add(fileMenu);
mb.add(editMenu);
mb.add(aboutMenu);
popUpMenu=editMenu.getPopupMenu();
//自定义字体
Fontfont=newFont("宋体",Font.BOLD,20);
FontmenuFont=newFont("楷体",Font.BOLD,18);
FontsmallmenuFont=newFont("黑体",Font.PLAIN,15);
//文字编辑区域
textArea=newJTextArea();
textArea.setFont(menuFont);//设置字体
textArea.setLineWrap(true);//自动换行
JScrollPanescrollp=newJScrollPane(textArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
ContainercontentPane=f.getContentPane();
contentPane.add(scrollp,BorderLayout.CENTER);
contentPane.add(mb,BorderLayout.NORTH);
JLabeljl=newJLabel("设计者:
张秋缘(201108030248)李亚飞(201108030226)");
jl.setFont(font);
contentPane.add(jl,BorderLayout.SOUTH);
editMenu.setFont(menuFont);
fileMenu.setFont(menuFont);
aboutMenu.setFont(menuFont);
menuAbout.setFont(smallmenuFont);
menuOpen.setFont(smallmenuFont);
menuSave.setFont(smallmenuFont);
menuSaveAs.setFont(smallmenuFont);
menuClose.setFont(smallmenuFont);
menuCut.setFont(smallmenuFont);
menuCopy.setFont(smallmenuFont);
menuPaste.setFont(smallmenuFont);
//注册事件监听器
menuOpen.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
openFile();
}
});
menuSave.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
saveFile();
}
});
menuSaveAs.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
saveFileAs();
}
});
menuClose.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
closeFile();
}
});
menuCut.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
cut();
}
});
menuCopy.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
copy();
}
});
menuPaste.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
paste();
}
});
menuAbout.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showOptionDialog(null,
"程序名称:
\n我们的小记事本o((≧▽≦))o\n"
+"程序设计者:
\n张秋缘201108030248\n李亚飞201108030226\n"
+"简介:
\nJAVA综合实验\n"
+"文本编辑器\n",
"关于我们的小记事本",JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,null,null,
null);
}
});
textArea.addMouseListener(newMouseAdapter(){
publicvoidmouseReleased(MouseEvente){
if(e.getButton()==MouseEvent.BUTTON3)
popUpMenu.show(editMenu,e.getX(),e.getY());
}
publicvoidmouseClicked(MouseEvente){
if(e.getButton()==MouseEvent.BUTTON1)
popUpMenu.setVisible(false);
}
});
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(900,600);
f.setVisible(true);
}
publicvoidopenFile(){
JFileChooserfileChooser=newJFileChooser();
intoption=fileChooser.showOpenDialog(null);
if(option==JFileChooser.APPROVE_OPTION){
try{
BufferedReaderbuf=newBufferedReader(newFileReader(
fileChooser.getSelectedFile()));
mfile=fileChooser.getSelectedFile();
textArea.setText("");
StringlineSeparator=System.getProperty("line.separator");
Stringtext;
while((text=buf.readLine())!
=null){
textArea.append(text);
textArea.append(lineSeparator);
}
buf.close();
}catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),"开启文件失败",
JOptionPane.ERROR_MESSAGE);
}
}
}
privatevoidsaveFile(){
try{
if(mfile==null){
saveFileAs();
}
elseif(!
mfile.exists()){
JOptionPane.showMessageDialog(null,null,"目标文件已不存在",
JOptionPane.ERROR_MESSAGE);
}
else{
BufferedWriterbuf=newBufferedWriter(newFileWriter(mfile));
buf.write(textArea.getText());
buf.close();
}
//保存失败处理
}catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),"写入文件失败",
JOptionPane.ERROR_MESSAGE);
}
}
privatevoidsaveFileAs(){
//显示文件对话框
JFileChooserfileChooser=newJFileChooser();
intoption=fileChooser.showSaveDialog(null);
if(option==JFileChooser.APPROVE_OPTION){
mfile=fileChooser.getSelectedFile();
try{
mfile.createNewFile();
saveFile();
}catch(IOExceptione){
JOptionPane.showMessageDialog(null,e.toString(),"无法建立新文件",
JOptionPane.ERROR_MESSAGE);
}
}
}
privatevoidcloseFile(){
intoption=JOptionPane.showConfirmDialog(null,"文件已修改,是否保存?
",
"保存文件?
",JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,null);
switch(option){
caseJOptionPane.YES_OPTION:
//退出前保存文件
saveFile();
break;
caseJOptionPane.NO_OPTION:
//直接退出
System.exit(0);
}
}
privatevoidcut(){
textArea.cut();
popUpMenu.setVisible(false);
}
privatevoidcopy(){
textArea.copy();
popUpMenu.setVisible(false);
}
privatevoidpaste(){
textArea.paste();
popUpMenu.setVisible(false);
}
publicstaticvoidmain(String[]args){
OurNotenote=newOurNote();
}
}
程序分析:
我们的记事本名称为“我们的小记事本”,包含一个菜单条,菜单条里有文件、编辑、关于三个菜单,可以选择菜单里不同的菜单项来实现不同的功能,包括:
打开、保存、另存为、关闭、剪贴、粘贴、复制和关于;每个菜单项根据需要添加了相应的快捷键;还加入了剪切、粘贴、复制等几项常用操作的右键菜单,设置了鼠标监听器来实现这些右键菜单的功能。
记事本可以实现对文字的编辑、保存和另存为等功能,在文本编辑区TextArea中还添加了滚动条。
运行结果:
四、实验中出现的问题及解决方法和经验小结
1、问题:
不知道怎么实现右键菜单剪切、粘贴、复制的功能。
解决方法:
通过看书和查找资料,我们用鼠标事件监听器解决了这个问题,重写了MouseListener里面的mouseReleased和mouseClicked的方法,设置单击鼠标右键时弹出右键菜单,单击左键时不弹出。
2、问题:
在编写openFile方法时,弹出打开文件对话框选择要打开的文件后无响应。
解决方法:
添加了一个变量:
当前文件mfile,将要打开的文件给当前文件,由当前文件写入缓冲区;再由缓冲区显示到文本区textAera里面,便可以打开选择的文件了。
3、全局变量要定义在程序最开始的部分,不要写在某一方法里,否则其他地方用到此变量的时候会出现错误。
4、当程序较长时要规范编程格式,习惯写清注释,使程序更具可读性和可修改性。
五、实验总结
通过本次实验,加深了我对老师在课堂上教授知识的理解,使我对JAVA语言面向对象编程掌握的更加熟练。
练习了关于添加事件监听器的那部分知识,体会到了和同学合作的重要性;同时也增加了对学习JAVA的兴趣,见到其他同学的设计也认识到了自己的不足,同时也学到了其他同学独特的编程方法。
(李亚飞)
在本次实验过程中,实现记事本某些功能的时候,例如openfile方法里有几个小问题一直改不对,反复检查、看书、查找资料,过程很苦闷也很烦躁,但是最后看着自己辛苦设计的程序运行出了结果特别有成就感,感觉付出的努力是值得的。
通过本次实验,让我加深了对JAVA语言理论知识的理解,更加熟练掌握了JAVA语言的设计能力并且有了实践经验,加强了我对JAVA语言的学习兴趣和好感。
(张秋缘)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 综合 实验 报告