华北科技学院计算机系综合性实验实验报告课程名称Java程序设计A实验学期2010至2011学年第1学期学生所在系部计算机年级2008专业班级计科B083学生姓名陈浩浩学号200807014308任课教师李芙玲实验成绩计算机系制华北科技学院计算机系综合性实验报告第1页《Java程序设计A》课程综合性实验报告开课实验室:基础实验室二2010年12月17日实验题目我的写字板一、实验目的通过编写Java的应用系统综合实例——简易写字板软件,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。熟悉在集成开发环境下编写Java程序。二、设备与环境硬件:多媒体计算机软件:Windows2000以上的操作系统、JDK开发包、集成开发环境MyEclipse7.0Blue三、实验内容总体要求:程序功能基本完成,用户界面友好,代码的可维护性和可扩展性较好,最好包括必要的注释和相应的文档。具体要求:基本的文本录入,字符修改,删除,换行,粘贴,复制,剪切等功能,主要包括:1.菜单栏设计及功能实现:菜单栏主要包括文件、编辑、格式、帮助等常见菜单。其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有剪切、复制、粘贴、等功能;格式菜单含有对文字字体、字型、字号及颜色等的设置功能,根据情况可在编辑菜单添加查找和查找替换功能。2.编辑区设计:对文本的编辑处理区。3.工具栏设计:可根据需要增加该项功能。4.其他功能设计。四、实验结果及分析1.主界面的设计与实现整个界面共包括2部分,如图1所示,最上面是菜单栏,中部是主文本区。华北科技学院计算机系综合性实验报告第2页图1主界面①菜单的设计本程序共设计5个菜单,分别是文件,编辑,格式,查看,帮助,其中文件菜单实现了新建,打开,保存,另存为,退出程序功能,编辑菜单实现了复制,剪切,全选,清楚功能,格式菜单实现了字体,文字颜色,背景颜色,自动换行功能,视图窗体主要控制菜单栏和格式栏是否显示,帮助菜单里是一个关于程序的介绍。各个菜单的功能见图2。图2各菜单功能华北科技学院计算机系综合性实验报告第3页②编辑区设计编辑区可以实现文字的输入,编辑,复制,剪切,粘贴等,也可以实现弹出式菜单,弹出式菜单可以进行复制,剪切,粘贴操作。编辑区是一个JTextArea,被添加到了窗体的中部。2.文件菜单中各项功能的实现①新建功能设计/*以下代码实现新建功能*?if(e.getActionCommand().equals(新建)){jta.setText();}②打开功能设计/*以下代码实现打开功能*?if(e.getActionCommand().equals(打开)){try{Framef=newFrame();FileDialogfd=newFileDialog(f,打开文件,FileDialog.LOAD);fd.setVisible(true);Stringfpath=fd.getDirectory();Stringfname=fd.getFile();BufferedReaderbr=newBufferedReader(newFileReader(fpath+fname));jta.setText();Strings=br.readLine();while(s!=null){jta.append(s+\n);s=br.readLine();}br.close();}catch(Exceptionex){}}③保存和另存为功能设计/*以下代码实现保存功能*/if(e.getActionCommand().equals(保存)){Stringfns=null;Framef=newFrame(保存);FileDialogfd=newFileDialog(f,保存文件,FileDialog.SAVE);fd.setFile(*.txt);fd.setVisible(true);try{Stringsavepath=fd.getDirectory();Stringsavename=fd.getFile();if(savename!=null){PrintWriterpw=newPrintWriter(newBufferedWriter(newFileWriter(savepath+savename)));华北科技学院计算机系综合性实验报告第4页pw.write(jta.getText(),0,jta.getText().length());pw.flush();}}catch(Exceptionesave){}}/*以下代码实现另存为功能*/if(e.getActionCommand().equals(另存为)){Framef=newFrame(保存);FileDialogfd=newFileDialog(f,文件另存为,FileDialog.SAVE);fd.setVisible(true);try{Stringsavepath=fd.getDirectory();Stringsavename=fd.getFile();if(savename!=null){PrintWriterpw=newPrintWriter(newBufferedWriter(newFileWriter(savepath+savename)));pw.write(jta.getText(),0,jta.getText().length());pw.flush();}}catch(Exceptionesave){}}④复制,剪切,粘贴,全选,删除功能的实现if(e.getActionCommand().equals(剪切)){jta.cut();}if(e.getActionCommand().equals(复制)){jta.copy();}if(e.getActionCommand().equals(粘贴)){jta.paste();}if(e.getActionCommand().equals(删除)){}if(e.getActionCommand().equals(全选)){jta.selectAll();}⑤查找功能实现if(e.getActionCommand().equals(查找)){try华北科技学院计算机系综合性实验报告第5页{finalJDialogjd=newJDialog(this,查找,true);GridBagLayoutgbl=newGridBagLayout();GridBagConstraintsgbc=newGridBagConstraints();gbc.weightx=0.5;gbc.weighty=0.5;gbc.gridwidth=1;gbc.gridheight=1;jd.getContentPane().setLayout(gbl);jd.setSize(380,100);jd.setResizable(false);finalJTextFieldjtf=newJTextField(15);JLabeljlFind=newJLabel(查找内容:);jd.getContentPane().add(jlFind);JButtonjbFind=newJButton(查找);jbFind.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventefind){StringstrA=jta.getText();StringstrB=jtf.getText();if(a=0){a=strA.indexOf(strB,StartFindPos);b=strB.length();StartFindPos=a+b;if(a==-1){华北科技学院计算机系综合性实验报告第6页JOptionPane.showMessageDialog(null,没有您要查找的信息,查找结果,1);a=0;StartFindPos=0;}jta.select(a,StartFindPos);}}});JButtonjbCancel=newJButton(取消);jbCancel.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventejb){jd.dispose();}});jd.getContentPane().add(jtf);jd.getContentPane().add(jbFind);jd.getContentPane().add(jbCancel);jd.setLocation(240,200);jd.setDefaultCloseOperation(DISPOSE_ON_CLOSE);jd.setVisible(true);}catch(Exceptionefind){}}华北科技学院计算机系综合性实验报告第7页⑥替换的实现if(e.getActionCommand().equals(替换)){finalJDialogjd=newJDialog(this,替换,true);GridBagLayoutgbl=newGridBagLayout();GridBagConstraintsgbc=newGridBagConstraints();gbc.weightx=1;gbc.weighty=1;gbc.gridwidth=1;gbc.gridheight=1;JLabeljlFind=newJLabel(查找:);JLabeljp=newJLabel(替换内容:);finalJTextFieldjtf=newJTextField(15);finalJTextFieldjtf1=newJTextField(15);jd.getContentPane().setLayout(gbl);jd.setSize(330,150);jd.setResizable(false);finalJButtonjbReplace=newJButton(替换);finalJButtonjbReplaceAll=newJButton(替换所有);finalJButtonjbCancel=newJButton(取消);finalJButtonjbFind=newJButton(查找);gbc.gridx=0;gbc.gridy=0;jd.getContentPane().add(jlFind,gbc);gbc.gridx=1;gbc.gridy=0;jd.getContentPane().add(jtf1,gbc);gbc.gridx=2;gbc.gridy=0;jd.getContentPane().add(jbFind,gbc);华北科技学院计算机系综合性实验报告第8页gbc.gridx=0;gbc.gridy=1;jd.getContentPane().add(jp,gbc);gbc.gridx=1;gbc.gridy=1;jd.getContentPane().add(jtf,gbc);gbc.gridx=2;gbc.gridy=1;jd.getContentPane().add(jbReplace,gbc);gbc.gridx=2;gbc.gridy=2;jd.getContentPane().add(jbReplaceAll,gbc);gbc.gridx=2;gbc.gridy=3;jd.getContentPane().add(jbCancel,gbc);jbFind.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventefind){StringstrA=jta.getText();StringstrB=jtf1.ge