华北科技学院计算机学院课程综合作业实验报告华北科技学院计算机学院课程综合作业实验报告课程名称Java大学实用教程实验学期2012至2013学年第一学期学生所在系部计算机学院年级2011专业班级信管B11-x学生姓名xxx学号xxxxxxxxxxx任课教师王养廷实验成绩计算机学院制华北科技学院计算机学院课程综合作业实验报告第1页《JAVA程序设计》课程综合作业实验报告开课实验室:基础四2012年12月20日实验题目用java编写简单记事本一、实验目的a)掌握面向对象程序设计基本要素(封装、继承、多态)b)掌握JAVA语言常用类包及其常用方法和JAVA语言基本语法c)掌握基于AWT的图形用户界面设计i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、滚动条等。ii.事件处理机制d)掌握布局、对话框的使用e)掌握发布JAVA应用程序二、设备与环境硬件:多媒体计算机软件:Windows2000以上的操作系统、JAVA集成开发环境三、实验内容1.完成记事本的需求分析。2.记事本的总体设计,列出主要的类和类间关系。3.列出具体的实现代码。4.写出程序的实现细节,主要得功能界面,实现说明。5.写出总结和评价。四、实验结果及分析1.实验分析本程序是一个简单的记事本程序,其主要结构参照了Windows操作系统的记事本工具。能够实现一些基本功能,主要有:(1)具有编辑界面,能够实现文本的输入、删除等基本功能。(2)具有菜单条,包含三个主菜单:文件、编辑、帮助。华北科技学院计算机学院课程综合作业实验报告第2页(3)各个主菜单分别拥有其菜单选项。(4)文件主菜单含有新建、打开、保存、另存为、退出五个菜单选项;(5)编辑主菜单含有剪切、粘贴、复制、全选四个菜单选项。(6)帮助主菜单好友关于记事本信息的菜单选项,主要记录了记事本文件的基本信息。(7)各个菜单选项能够实现其对应的功能。(8)实现剪切、复制、粘贴、全选即编辑菜单的鼠标跳出菜单功能。(9)各功能具有快捷键。2.程序设计思想①首先设计出整个记事本的主体框架,添加菜单栏(JMenu),添加菜单选项(JMenuItem)。这部分应用到了Container、JMenuBar、JMenu、JMenuItem的构造方法,实现对记事本的基本页面设计。②在页面中添加编辑局域,应用了JTextArea的构造方法。③实现各个菜单选项的功能。在具体的功能实现中,为每一个功能设计了一个类,通过监听调用类方法实现所需要实现的功能。④程序中的类以及它们之间的关系:本程序总共含有9个类:Notebook()主类:他实现了记事本的基本框架构造,以及对记事本各个功能的监听,并且调用各个功能的类方法。在Notebook()中,加入了编辑菜单的弹出菜单功能。在Notebook()主类中,通过事件监听调用了剪切、复制、保存等功能的类方法:NewActionListener():实现“新建”功能的类SaveActionListener():实现“保存”功能的类OpenActionListener():实现“打开”功能的类ExitActionListener():实现“退出”功能的类CutActionListener():实现“剪切”功能的类CopyActionListener():实现“粘贴”功能的类SallActionListener():实现“全选”功能的类AbouthActionListener():实现“关于”功能的类3.程序整体框架添加事件监Notebook()初始化界面组件华北科技学院计算机学院课程综合作业实验报告第3页4.程序代码importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjavax.swing.*;publicclassMyNotebook{publicstaticvoidmain(Stringargs[]){newNotebook();}}//Notebook()主类:classNotebookextendsJFrame{Containercontainer;JFileChooserfc=newJFileChooser();Filefile=null;JMenuBarmb;JMenufileMenu,editMenu,helpMenu;文字输入区华北科技学院计算机学院课程综合作业实验报告第4页JMenuItemnewItem,openItem,saveItem,saveasItem,exitItem,cutItem,copyItem,pasteItem,sallItem,aboutItem;JTextAreajta;JPopupMenupopUpMenu;publicNotebook(){//记事本主界面设计程序//setTitle(记事本);container=this.getContentPane();container.setLayout(newBorderLayout());jta=newJTextArea();container.add(jta);setVisible(true);setSize(650,450);mb=newJMenuBar();setJMenuBar(mb);//文件菜单及其菜单选项的程序设计//fileMenu=newJMenu(文件);newItem=newJMenuItem(新建);//设置快捷键//newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));//设置“新建”事件监听//newItem.addActionListener(newNewActionListener());fileMenu.add(newItem);fileMenu.addSeparator();openItem=newJMenuItem(打开);华北科技学院计算机学院课程综合作业实验报告第5页openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));openItem.addActionListener(newOpenActionListener());fileMenu.add(openItem);fileMenu.addSeparator();saveItem=newJMenuItem(保存);saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));saveItem.addActionListener(newSaveActionListener());fileMenu.add(saveItem);fileMenu.addSeparator();saveasItem=newJMenuItem(另存为);saveasItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,ActionEvent.CTRL_MASK));saveasItem.addActionListener(newSaveActionListener());fileMenu.add(saveasItem);fileMenu.addSeparator();exitItem=newJMenuItem(退出);exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK));exitItem.addActionListener(newExitActionListener());fileMenu.add(exitItem);mb.add(fileMenu);//编辑菜单栏及其菜单选项程序设计//editMenu=newJMenu(编辑);cutItem=newJMenuItem(剪切);cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,华北科技学院计算机学院课程综合作业实验报告第6页ActionEvent.CTRL_MASK));cutItem.addActionListener(newCutActionListener());editMenu.add(cutItem);editMenu.addSeparator();copyItem=newJMenuItem(复制);copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK));copyItem.addActionListener(newCopyActionListener());editMenu.add(copyItem);editMenu.addSeparator();pasteItem=newJMenuItem(粘贴);pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK));pasteItem.addActionListener(newPasteActionListener());editMenu.add(pasteItem);editMenu.addSeparator();sallItem=newJMenuItem(全选);sallItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,ActionEvent.CTRL_MASK));sallItem.addActionListener(newSallActionListener());editMenu.add(sallItem);mb.add(editMenu);//帮助菜单栏及其菜单选项程序设计//helpMenu=newJMenu(帮助);aboutItem=newJMenuItem(关于记事本);aboutItem.addActionListener(newAbouthActionListener());helpMenu.add(aboutItem);mb.add(helpMenu);//编辑菜单的鼠标监听及其弹出菜单的功能设计//popUpMenu=editMenu.getPopupMenu();华北科技学院计算机学院课程综合作业实验报告第7页jta.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);}});}//“新建”功能的实现//classNewActionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){jta.setText();file=null;}}//“保存功能的实现”//classSaveActionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(file!=null)fc.setSelectedFile(file);intre