[毕业设计精品] 文本编辑器的设计与实现_第1页
[毕业设计精品] 文本编辑器的设计与实现_第2页
[毕业设计精品] 文本编辑器的设计与实现_第3页
[毕业设计精品] 文本编辑器的设计与实现_第4页
[毕业设计精品] 文本编辑器的设计与实现_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1 设计时间12 设计目的13 设计任务14 设计内容14.1需求分析14.2概要设计14.2.1系统功能图14.3详细设计24.3.1 系统流程图24.4系统功能与实现24.4.1 类或包的加载24.4.1构建菜单栏及其下拉菜单34.5 运行与测试195 总结与展望21参考文献23成绩评定23 1 设计时间2011年12月19日-2011年12月25日2 设计目的文本编辑器的设计与实现3 设计任务设计文本编辑器,实现打开、新建、保存一个文本文件;设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等功能。4 设计内容 4.1需求分析 在科学技术飞速发展的今天,计算机

2、科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。应用java技术实现学生学习实践是可行而必要的工作 。在社会生活中我们经常需要用电脑编写一些文档来保存文件,本课程设计是运用了java软件开发工具开发的应用软件4.2概要设计4.2.1系统功能图记事本程序文件编辑查找格式保存退出打开剪切复制粘贴查找替换帮助字体4.3详细设计4.3.1 系统流程图开始打开记事本打开文件菜单项打开编辑框显示文字打开帮助菜单项在各自功能中切换退出结束4.4系统功能与实现4.4.1 类或包的加载import java.awt.*;import java.awt.event.

3、*;import java.awt.datatransfer.*;import javax.swing.*;import java.io.*;import java.lang.*;4.4.1构建菜单栏及其下拉菜单 / 设置文件菜单及其菜单项 jmenu filemenu = new jmenu( "文件(f)" ); filemenu.setmnemonic( 'f' ); / 设置新建菜单项 jmenuitem newitem = new jmenuitem( "新建(n)" ); newitem.setmnemonic( 'n

4、' ); filemenu.add( newitem ); newitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) displaytext.settext(""); ); / 设置打开菜单项 jmenuitem openitem = new jmenuitem( "打开(o)" ); openitem.setmnemonic( 'o' ); filemenu.add( openitem ); o

5、penitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) fd.settitle("打开"); /设置标题 fd.show();if (fd.getfile() != null) file file = new file(fd.getfile(); /用从fd中取得的文件建立新文件,即打开的文件displaytext.settext( "");try filereader f = new filereader(file)

6、;bufferedreader b = new bufferedreader(f);/按行读打开的文件,然后传入文本域string s;try while (s = b.readline() != null) displaytext.append(s + "n");/将给定文本追加到文本域的当前文本(即把读的内容加入文本域)f.close();b.close(); catch (ioexception ex) catch (filenotfoundexception ex) else return; ); filemenu.addseparator(); /加分隔线 / 设

7、置保存菜单项 jmenuitem saveitem = new jmenuitem( "保存(s)" ); saveitem.setmnemonic( 's' ); filemenu.add( saveitem ); saveitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) fd.setfile("*.java"); fd.setmode(filedialog.save);fd.settitle(&qu

8、ot;保存");fd.show(); if (fd.getfile() != null) file file = new file(fd.getfile();try printwriter pw = new printwriter(new fileoutputstream(file);/1.5版本之前用这一句,之后可以用printwriter pw = new printwriter(file);pw.print(displaytext.gettext();/这一部分用于把textarea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件pw.flush();

9、 /刷新该流的缓冲,然后关闭该流pw.close(); catch (filenotfoundexception ex) ex.printstacktrace(); else return; ); / 设置另存为菜单项 jmenuitem saveasitem = new jmenuitem( "另存为(z)" ); saveasitem.setmnemonic( 'z' ); filemenu.add( saveasitem ); saveasitem.addactionlistener( new actionlistener() public void

10、actionperformed( actionevent event ) fd.setfile("*.java"); fd.setmode(filedialog.save);fd.settitle("另存为");fd.show(); if (fd.getfile() != null) file file = new file(fd.getfile();try printwriter pw = new printwriter(new fileoutputstream(file);/1.5版本之前用这一句,之后可以用printwriter pw = new

11、printwriter(file);pw.print(displaytext.gettext();/这一部分用于把textarea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件pw.flush(); /刷新该流的缓冲,然后关闭该流pw.close(); catch (filenotfoundexception ex) ex.printstacktrace(); else return; ); filemenu.addseparator(); /加分隔线 / 设置退出菜单项 jmenuitem exititem = new jmenuitem( "退出(x)

12、" ); exititem.setmnemonic( 'x' ); filemenu.add( exititem ); exititem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) system.exit( 0 ); );bar.add( filemenu );/*-*/ /创建编辑菜单及其菜单项 jmenu editmenu = new jmenu( "编辑(e)" ); editmenu.setmnemonic(

13、 'e' ); /剪切菜单选项 jmenuitem cutitem = new jmenuitem( "剪切(t)" ); cutitem.setmnemonic( 't' ); editmenu.add( cutitem ); cutitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) selecttext = displaytext.getselectedtext();/取得选定的文本int start =

14、 displaytext.getselectionstart();/选定的文本的开始位置int end = displaytext.getselectionend();/选定的文本的结束位置displaytext.replacerange("", start, end);/*用指定替换文本替换指定开始位置与结束位置之间的文本。 这里指定替换文本为空,即为剪切了文本*/ ); /复制菜单选项 jmenuitem copyitem = new jmenuitem( "复制(c)" ); copyitem.setmnemonic( 'c' );

15、 editmenu.add( copyitem ); copyitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) selecttext = displaytext.getselectedtext();/获得选中的内容,并保存在selecttext里 ); /粘贴的实现 jmenuitem pasteitem = new jmenuitem( "粘贴(p)" ); pasteitem.setmnemonic( 'p' ); e

16、ditmenu.add( pasteitem ); pasteitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) int position = displaytext.getcaretposition();/获得鼠标当前位置 displaytext.insert( selecttext,position );/插入到鼠标当前位置 ); editmenu.addseparator();/加分隔线 /替换的实现 jmenuitem swapitem = new j

17、menuitem( "替换(r))" ); swapitem.setmnemonic( 'r' ); editmenu.add( swapitem ); swapitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) jpanel swappanel=new jpanel(); jlabel lookuplabel=new jlabel("要替换的内容"); jtextfield inputtext=new

18、jtextfield(10); jlabel swaplabel=new jlabel("替换为:"); jtextfield changetotext=new jtextfield(10); swappanel.add(lookuplabel); swappanel.add(inputtext); swappanel.add(swaplabel); swappanel.add(changetotext); joptionpane.showmessagedialog(null,swappanel); string text=displaytext.gettext();/获得

19、整个文本内容 string changetext=text.replacefirst(inputtext.gettext(),changetotext.gettext();/获得替换后的内容 displaytext.settext(changetext); ); /全部替换的实现 jmenuitem aswapitem = new jmenuitem( "全部替换(q))" ); aswapitem.setmnemonic( 'q' ); editmenu.add( aswapitem ); aswapitem.addactionlistener( new

20、actionlistener() public void actionperformed( actionevent event ) jpanel swappanel=new jpanel(); jlabel lookuplabel=new jlabel("要替换的内容"); jtextfield inputtext=new jtextfield(10); jlabel swaplabel=new jlabel("替换为:"); jtextfield changetotext=new jtextfield(10); swappanel.add(lookup

21、label); swappanel.add(inputtext); swappanel.add(swaplabel); swappanel.add(changetotext); joptionpane.showmessagedialog(null,swappanel); string text=displaytext.gettext();/获得整个文本内容 string changetext=text.replaceall(inputtext.gettext(),changetotext.gettext();/获得替换后的内容 displaytext.settext(changetext);

22、); editmenu.addseparator();/加分隔线 /插入子菜单 jmenuitem insertitem=new jmenuitem("插入文本(k)"); insertitem.setmnemonic('k'); editmenu.add(insertitem); insertitem.addactionlistener( new actionlistener() public void actionperformed(actionevent event) jpanel insertpanel=new jpanel(); jlabel in

23、sertlabel=new jlabel("要插入的内容"); jtextfield inputtext=new jtextfield(10); insertpanel.add(insertlabel); insertpanel.add(inputtext); joptionpane.showmessagedialog(null,insertpanel); int fromindex=displaytext.getcaretposition();/取得当前的光标位置 displaytext.insert(inputtext.gettext(),fromindex); );

24、/删除子菜单 jmenuitem removeitem=new jmenuitem("删除(g)"); removeitem.setmnemonic('g'); editmenu.add(removeitem); removeitem.addactionlistener(new actionlistener() public void actionperformed(actionevent e) int start=displaytext.getselectionstart(); int end=displaytext.getselectionend();

25、displaytext.replacerange(null,start,end); ); editmenu.addseparator(); bar.add( editmenu );/add editmenu/*-*/ / 创建格式菜单及其菜单项 jmenu formatmenu = new jmenu( "格式(r)" ); formatmenu.setmnemonic( 'r' ); /自动换行的功能切换 jmenuitem changeitem = new jmenuitem( "自动换行(w)" ); changeitem.setm

26、nemonic( 'w' ); formatmenu.add( changeitem ); changeitem.addactionlistener( new actionlistener() boolean var = false; public void actionperformed( actionevent event ) if(var) var = false; else var=true; displaytext.setlinewrap(var); ); / 颜色菜单项 string colors = "黑色", "蓝色",

27、"红色", "绿色" ; jmenu colormenu = new jmenu( "颜色(c)" ); colormenu.setmnemonic( 'c' ); coloritems = new jradiobuttonmenuitem colors.length ; colorgroup = new buttongroup(); itemhandler itemhandler = new itemhandler(); / 创建颜色按钮监听器 for ( int count = 0; count < colo

28、rs.length; count+ ) coloritems count = new jradiobuttonmenuitem( colors count ); colormenu.add( coloritems count ); colorgroup.add( coloritems count ); coloritems count .addactionlistener( itemhandler ); / 默认颜色 coloritems 0 .setselected( true ); / 将颜色菜单项菜单加入菜单 formatmenu.add( colormenu ); formatmenu

29、.addseparator(); /加分隔线 / 字体菜单项 jmenu fontmenu = new jmenu( "字体(n)" ); fontmenu.setmnemonic( 'n' ); fonts = new jradiobuttonmenuitem fontnames.length ; fontgroup = new buttongroup(); / 创建字体按钮监听器 for ( int count = 0; count < fonts.length; count+ ) fonts count = new jradiobuttonmen

30、uitem( fontnames count ); fontmenu.add( fonts count ); fontgroup.add( fonts count ); fonts count .addactionlistener( itemhandler ); / 默认字体 fonts 0 .setselected( true ); fontmenu.addseparator(); / 设置风格菜单 styleitems = new jcheckboxmenuitem stylenames.length ; for ( int count = 0; count < stylenames

31、.length; count+ ) styleitems count = new jcheckboxmenuitem( stylenames count ); fontmenu.add( styleitems count ); stylehandler stylehandler = new stylehandler(); styleitems count .additemlistener( stylehandler ); formatmenu.add( fontmenu ); bar.add( formatmenu );/*-*/ /创建查找菜单 jmenu searchmenu = new

32、jmenu( "查找(s)" ); searchmenu.setmnemonic( 'h' ); /添加向前查找菜单项 jmenuitem frontitem = new jmenuitem( "向前查找(f)" ); frontitem.setmnemonic( 'f' ); searchmenu.add( frontitem ); frontitem.addactionlistener( new actionlistener() public void actionperformed( actionevent even

33、t ) jpanel swappanel=new jpanel(); jlabel seeklabel=new jlabel("要查找的内容"); jtextfield inputtext=new jtextfield(20); swappanel.add(seeklabel); swappanel.add(inputtext); joptionpane.showmessagedialog(null,swappanel); string text=displaytext.gettext();/获得整个文本内容 int fromindex=displaytext.getcar

34、etposition();/取得当前的光标位置 int lastfromindex=text.indexof(inputtext.gettext(),fromindex);/获得查找后的位置 displaytext.setcaretposition(lastfromindex); displaytext.movecaretposition(lastfromindex+inputtext.gettext().length();/使查找到的子字符串显示出来 ); /添加向后查找菜单项 jmenuitem backitem = new jmenuitem( "向后查找(b)" )

35、; backitem.setmnemonic( 'b' ); searchmenu.add( backitem ); backitem.addactionlistener( new actionlistener() public void actionperformed( actionevent event ) jpanel swappanel=new jpanel(); jlabel seeklabel=new jlabel("要查找的内容"); jtextfield inputtext=new jtextfield(20); swappanel.add(

36、seeklabel); swappanel.add(inputtext); joptionpane.showmessagedialog(null,swappanel); string text=displaytext.gettext();/获得整个文本内容 int fromindex=displaytext.getcaretposition();/取得当前的光标位置 int lastfromindex=text.lastindexof(inputtext.gettext(),fromindex);/获得查找后的位置 displaytext.setcaretposition(lastfromin

37、dex); displaytext.movecaretposition(lastfromindex+inputtext.gettext().length();/使查找到的子字符串显示出来 ); bar.add( searchmenu ); /添加/*-*/ /创建帮助菜单 jmenu helpmenu = new jmenu( "帮助(h)" ); helpmenu.setmnemonic( 'h' ); / 设置“关于(a).”菜单项 jmenuitem aboutitem = new jmenuitem( "关于(a)." ); aboutitem.setmnemonic( 'a' ); helpmenu.add( aboutitem ); aboutitem.addactionlistener( new actionlistener() p

温馨提示

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

评论

0/150

提交评论