Java实训报告电子版_第1页
Java实训报告电子版_第2页
Java实训报告电子版_第3页
Java实训报告电子版_第4页
Java实训报告电子版_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文本编辑器的设计和实现1实训目的1.1实训目的《Java程序设计实训》是计算机专业一门重要的专业技术基础实践课程。为了能够较好的完成实训任务,学生应具备软件开发技术的基础知识,实训的主要目的在于将理论与实际应用相结合,使用程序设计语言java,以及相关软件设计开发知识完成软件的设计开发任务。本实训课程将为整个专业的学习以及软件设计水平的提高打下良好的基础,提高学生项目分析、设计、编写、调试和测试的能力,并培养基本的、良好的团队合作能力。1.2实训要求实训中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握软件开发技术,提高分析、解决实际问题的能力本次实训要求在学生能够较熟练使用java程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。2文本编辑器系统的分析与设计2.1系统功能描述通过此系统可以实现如下功能: 1)可进行文件的新建、打开、保存、编辑等基本功能。 2)支持复制、剪切和粘贴操作 3)可进行查找和替换操作2.2系统模块设计根据系统自带的文档编辑器的特征设计,包括如下的功能模块:整体结构框架包括:菜单栏和文档编辑区每个框架分别包含不同的子框架,各个模块的具体框架:菜单栏:文件、编辑、工具菜单栏中各个子菜单功能文件:新建、打开、保存、另存为、退出编辑:剪切、复制、粘贴工具:查找、替换子菜单功能的实现主要的几个功能介绍打开与另存为:两个窗体调用系统函数直接利用,注意格式的选择查找:查找内容、查找、查找下一个文本编辑区监视文本内容是否改变、监听光标所在位置2.3数据库结构设计1.程序E-R图菜单栏菜单栏文件编辑工具文件新建打开文件新建打开保存另存为退出编辑编辑剪切复制粘贴工具查找替换3主要代码清单3.1生成菜单栏及菜单项publicvoidaddmyMenu()//菜单函数,生成菜单 { JMenuBarmenubar=newJMenuBar();//菜单栏添加若干菜单 this.setJMenuBar(menubar); Stringmenustr[]={"文件","编辑","工具","帮助"};//菜单栏字符串数组 JMenumenu[]=newJMenu[menustr.length]; for(inti=0;i<menu.length;i++){//为菜单栏赋值 menu[i]=newJMenu(menustr[i]); menubar.add(menu[i]); } Stringmenuitemstr0[]={"新建","打开","保存","另存为","退出"};//文件菜单中添加若干菜单项 JMenuItemmenuitem0[]=newJMenuItem[menuitemstr0.length]; for(inti=0;i<menuitem0.length;i++){//为文件菜单赋值 menuitem0[i]=newJMenuItem(menuitemstr0[i]); menu[0].add(menuitem0[i]); menuitem0[i].addActionListener(this);//为每个菜单项注册监听事件 } Stringmenuitemstr1[]={"剪切","复制","粘贴"};//编辑菜单中添加若干菜单项 JMenuItemmenuitem1[]=newJMenuItem[menuitemstr1.length]; for(inti=0;i<menuitem1.length;i++){ menuitem1[i]=newJMenuItem(menuitemstr1[i]); menu[1].add(menuitem1[i]); menuitem1[i].addActionListener(this);//为每个菜单项注册监听事件 } Stringmenuitemstr2[]={"查找","替换"};//工具菜单中添加若干菜单项 JMenuItemmenuitem2[]=newJMenuItem[menuitemstr2.length]; for(inti=0;i<menuitem2.length;i++){ menuitem2[i]=newJMenuItem(menuitemstr2[i]); menu[2].add(menuitem2[i]); menuitem2[i].addActionListener(this);//为每个菜单项注册监听事件 } JMenuItemmenuitemstr3=newJMenuItem("帮助");//帮助菜单中添加帮助菜单项 menu[3].add(menuitemstr3); menuitemstr3.addActionListener(this);//注册监听事件 }3.2监听事件处理注册监听事件,当进行操作时,监听事件活得事件源并选择相应的操作,对不同的事件调用不同的函数,得到文本操作的不同结果。classMyItemListener_fontimplementsItemListener{//字体监听器publicvoiditemStateChanged(ItemEvente){id_font=((java.awt.List)e.getSource()).getSelectedIndex();switch(id_font){case0:{ta.setFont(newFont("TimesNewRoman",Font.PLAIN,ta.getFont().getSize()));//普通文字break;}case1:{ta.setFont(newFont("TimesNewRoman",Font.BOLD,ta.getFont().getSize()));//粗体文字break;}case2:{ta.setFont(newFont("TimesNewRoman",Font.ITALIC,ta.getFont().getSize()));//斜体文字break;}}}}4程序运行与测试4.1文本区功能测试字体的显示,开始的时候不做任何操作的时候显示的默认值,通过修改字体的属性来修改字体。对文本事件进行监听,如果文本编辑窗口中如果有事件触发,关闭时能够有必要的信息提示。状态栏的可以正常显示文本的状态信息。4.2文件菜单功能测试文件中的功能测试:通过文件字符流读取文件,创建缓冲区存储文件流。当保存文件时,先判断文件是否未被保存过,如果未被保存过,则创建新文件并通过输出流来存储文件,当文件已经保存过再对文件进行修改时,则会提示保存的消息窗体。另存为是通过不同的方法来创建一个新的文件。附:打开与保存代码:miSave.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(fileName.equals("")){//如果文件没有被保存过,即文件名为空FileDialogd=newFileDialog(mainFrame,"savefile",FileDialog.SAVE);//保存文件对话框d.addWindowListener(newWindowAdapter(){//关闭文件对话框窗口publicvoidwindowClosing(WindowEventee){System.exit(0);}});d.setVisible(true);Strings=ta.getText();//得到所输入的文本内容try//异常处理{Filef=newFile(d.getDirectory()+d.getFile());//新建文件fileName=d.getDirectory()+d.getFile();//得到文件名BufferedWriterbw=newBufferedWriter(newFileWriter(f));//输入到文件中bw.write(s,0,s.length());bw.close();}catch(FileNotFoundExceptionfe_){System.out.println("filenotfound");System.exit(0);}catch(IOExceptionie_){System.out.println("IOerror");System.exit(0);}}else//如果文件已经保存过{Strings=ta.getText();//得到所输入的文本内容try//异常处理{Filef=newFile(fileName);//新建文件BufferedWriterbw=newBufferedWriter(newFileWriter(f));//输入到文件中bw.write(s,0,s.length());bw.close();}catch(FileNotFoundExceptionfe_){System.out.println("filenotfound");System.exit(0);}catch(IOExceptionie_){System.out.println("IOerror");System.exit(0);}}});//另存为miSaveAs.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){FileDialogd=newFileDialog(mainFrame,"savefile",FileDialog.SAVE);//保存文件对话框d.addWindowListener(newWindowAdapter(){//关闭文件对话框窗口publicvoidwindowClosing(WindowEventee){System.exit(0);}});d.setVisible(true);Strings=ta.getText();//得到所输入的文本内容try//异常处理{Filef=newFile(d.getDirectory()+d.getFile());//新建文件BufferedWriterbw=newBufferedWriter(newFileWriter(f));//输入到文件中bw.write(s,0,s.length());bw.close();}catch(FileNotFoundExceptionfe_){System.out.println("filenotfound");System.exit(0);}catch(IOExceptionie_){System.out.println("IOerror");System.exit(0);}}});4.3编辑菜单功能测试复制前粘贴后剪切前剪切后剪切、复制、粘贴功能的实现是在注册监听事件后,对文本去的文字进行操作时,系统调用文本类本身的库函数来处理文本去的文字操作,将选中的文本读入缓冲区。然后再等待不同的操作方法的调用。附录:miCut.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){tempString=ta.getSelectedText();///得到要复制的内容,暂存在tempString中StringBuffertmp=newStringBuffer(ta.getText());//临时存储文本intstart=ta.getSelectionStart();//得到要删除的字符串的起始位置intlen=ta.getSelectedText().length();//得到要删除的字符串的长度tmp.delete(start,start+len);///删除所选中的字符串ta.setText(tmp.toString());//用新文本设置原文本}});//复制miCopy.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){tempString=ta.getSelectedText();///得到要复制的内容,暂存在tempString中}})//粘贴miPaste.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){StringBuffertmp=newStringBuffer(ta.getText());//临时存储文本intstart=ta.getSelectionStart();//得到要粘贴的位置tmp.insert(start,tempString);//查入要粘贴的内容ta.setText(tmp.toString());//用新文本设置原文本}});//删除miDelete.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){StringBuffertmp=newStringBuffer(ta.getText());//临时存储文本intstart=ta.getSelectionStart();//得到要删除的字符串的起始位置intlen=ta.getSelectedText().length();//得到要删除的字符串的长度tmp.delete(start,start+len);///删除所选中的字符串ta.setText(tmp.toString());//用新文本设置原文本}});4.4工具菜单功能测试功能描述:查找需要先生成对应的窗体,使用相应的组件类来创建窗体,使用流布局管理器来对窗体中的各个控件进行布局,对查找和查找下一个按钮注册监听事件并编写相应的处理方法。文本去的文字使用相应的处理方法进行比较和处理,并对光标位置进行判断是否到文本末尾,使用异常处理语句捕获异常并处理。功能描述:替换也是需要先生成相应的窗体,使用相应的组件类来创建窗体,使用流布局管理器来对窗体中的各个控件进行布局,对替换和清空按钮注册监听事件并编写相应的处理方法。附:查找替换函数处理代码:publicvoidfind()//查找函数 { find.setSize(300,100);find.setLocation(this.getX()+50,this.getY()+50); find.setResizable(false); find.setLayout(newFlowLayout());//窗体流布局 Labellabel1=newLabel("查找内容"); Buttonbutton1=newButton("查找"); Buttonbutton2=newButton("查找下一个"); find.add(label1); find.add(ltext1); find.add(button1); find.add(button2);//注册按钮的监听事件 button1.addActionListener(newActionListener(){//查找按钮事件方法 publicvoidactionPerformed(ActionEvente){ if(ltext1.getText()=="") ; else{ intlocate=text.getText().indexOf(ltext1.getText(),0); text.select(locate,locate+ltext1.getText().length()); fromindex=locate+ltext1.getText().length(); } } }); button2.addActionListener(newActionListener(){//查找下一个按钮方法 publicvoidactionPerformed(ActionEvente){ intlocate=text.getText() .indexOf(ltext1.getText(),fromindex); if(locate==-1) ltext1.setText("已查找到文件末尾!"); else{ text.select(locate,locate+ltext1.getText().length()); fromindex=locate+ltext1.getText().length(); } } }); find.addWindowListener(newWindowAdapter(){//关闭对话框窗口 publicvoidwindowClosing(WindowEventee){ find.dispose(); } }); find.show(); find.removeAll(); }publicvoidreplace()//替换函数 { replace.setSize(200,200); replace.setLocation(this.getX()+50,this.getY()+50); replace.setResizable(false); replace.setLayout(newFlowLayout()); Labellabel_1=newLabel("查找内容"); Labellabel_2=newLabel("替换为"); Buttonbutton_1=newButton("替换"); Buttonbutton_2=newButton("清空"); replace.add(label_1); replace.add(ltext2); replace.add(label_2); replace.add(ltext3); replace.add(button_1); replace.add(button_2);//注册按钮的监听事件 button_1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(ltext2.getText()=="") ; else{ intlocate=text.getText().indexOf(ltext2.getText(),0); text.select(locate,locate+ltext2.getText().length()); text.replaceRange(ltext3.getText(),locate,locate +ltext2.getText().length()); } } }); button_2.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ ltext2.setText(""); ltext3.setText(""); }

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论