您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Java课程设计(文本编辑器)
《Java语言》课程期末作业题目第8题:文本编辑器学院专业班别学号姓名2010年12月14日你的姓名——《Java语言》课程期末作业2一、课程题目第8题:文本编辑器制作一个简单的文本编辑器,交互性要求:【最大选题人数:8】(1)可输入文字(仅要求英文及标点符号)(2)实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正……(3)可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件二、题目分析与设计2.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoftNotepad,Notepad++,win32pad,SkimEdit,UniRed,xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。2.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能主要有以下几个方面:(1).菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。(2)“文件”栏目分别有“新建”,“打开”,“保存”,“打印”,“退出”五个子菜单。分别用于新建文件,打开文件,保存文件,打印文件和退出记事本。(3)“编辑”栏目包括有“全选”,“复制”,“剪切”,“粘贴”,“查找”,“查找下一个”,“替换”七个字菜单。用于全选文字,剪切文字,复制文字,粘贴文字,查找关键字,替换关键字等。(4)“格式”栏目包括有“自动换行”,“字体”两个功能,点击自动换行可以实现文本自动换行,字体则提供了各种字形字号颜色等选择。(5)“查看”栏目有“状态”功能。(6)“帮助”栏目有“帮助主题”,“关于记事本”两个子菜单,帮助主题可以查看windows记事本帮助文件,关于记事本则是作者和版权信息。你的姓名——《Java语言》课程期末作业32.3模块说明图类层次调用关系图记事本运行流程图writeFile()方法Search()方法substitude()方法MiNinoteimplementsextendsActionListenerJFrameMiNinote的构造方法初始化容器组件添加事件监听菜单栏文字输入区文件帮助新建打开保存退出剪切粘贴查找查找下一个全选初始化初始化FonDialog添加右键菜单添加滚动条格式查看编辑打印复制自动换行字体状态栏帮助主题关于记事本替换FonDialog类构造方法openFile()方法你的姓名——《Java语言》课程期末作业42.4程序相关说明整个记事本分成:Jframe程序主体框架,Jmenu菜单栏、JtextArea文本输入区、PopupMenu右键菜单、JscrollPane滚动条、FonDialog字体类等。本程序中首先定义一个MiNinote类继承JFrame作为最底层容器。要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。三、测试分析1、主界面的设计2、文件菜单设计你的姓名——《Java语言》课程期末作业52、编辑设计3、格式设计4、查看设计你的姓名——《Java语言》课程期末作业65、帮助设计6、打印设计你的姓名——《Java语言》课程期末作业76、打开功能设计与实现运行记事本—点击文件-点击打开—弹出如下图对话框,选中文本“二叉树的各种操作.txt”,点击打开,如下图可以清楚看到文本所有内容被正确显示在文本阅读区,其中文本区右侧多余文本可以使用滚动条查看。点击打开后效果:你的姓名——《Java语言》课程期末作业87、保存功能设计与实现运行记事本—点击文件-点击保存—弹出如下图对话框,输入保存文件名和类型“保存功能.txt”,点击保存,内容被正确保存至电脑磁盘。重新运行记事本选择打开功能,找到刚才保存路径,如下图可以清楚查看到刚才正确保存的文本文件“保存功能.txt”:你的姓名——《Java语言》课程期末作业98、复制功能设计和实现运行记事本—输入文本,选择文本区域,右键选择复制功能,当然这个功能在编辑栏目的复制功能有同样的效果,如图:9、粘贴设计和实现上一步执行复制功能后,选中区域右键点击粘贴,如图可以看到文本被正确的拷贝到原文下方:你的姓名——《Java语言》课程期末作业1010、剪切设计和实现上一步执行粘贴功能后,选中区域右键点击剪切,效果如下图所示:剪切后效果如图:11、全选功能设计和实现你的姓名——《Java语言》课程期末作业11效果如下图:12、查找功能设计与实现选择编辑栏—查找功能—输入查找关键字“eeeFFF”,选择区分大小写,查找反向由下往上,测试可发现正确找到第六行文本:你的姓名——《Java语言》课程期末作业1212、替换功能设计和实现继续上面内容—选择编辑栏—替换功能—输入查找关键字“AAAbbb”—替换为“123456”,选择区分大小写,查找方向由上往下,测试全部替换功能,测试效果如下:13、字体设计文本区域输入文字或字符,选择格式栏目—选择字体,弹出如下图对话框,选择其中样式如下:你的姓名——《Java语言》课程期末作业13设置楷体+加粗+30号字体效果如下:14、关于记事本你的姓名——《Java语言》课程期末作业14附录:源代码//记事本主体类importjava.awt.event.*;importjava.awt.*;importjava.io.*;importjava.awt.datatransfer.*;importjavax.swing.*;importjava.awt.print.PrinterException;publicclassMiniNoteextendsJFrameimplementsActionListener{JMenuBarmenuBar=newJMenuBar();JMenufile=newJMenu(文件(F)),//菜单edit=newJMenu(编辑(E)),format=newJMenu(格式(O)),view=newJMenu(查看(V)),help=newJMenu(帮助(H));JMenuItem[]menuItem={//菜单下拉项newJMenuItem(新建(N)),newJMenuItem(打开(O)),newJMenuItem(保存(S)),newJMenuItem(打印(P)),newJMenuItem(全选(A)),newJMenuItem(复制(C)),newJMenuItem(剪切(T)),newJMenuItem(粘贴(P)),newJMenuItem(自动换行(W)),newJMenuItem(字体(F)),newJMenuItem(状态栏(S)),newJMenuItem(帮助主题(H)),newJMenuItem(关于记事本(A)),newJMenuItem(页面设置(U)),newJMenuItem(退出(X)),newJMenuItem(查找(F)),newJMenuItem(查找下一个(N)),newJMenuItem(替换(R))};JPopupMenupopupMenu=newJPopupMenu();;//右键菜单你的姓名——《Java语言》课程期末作业15JMenuItem[]menuItem1={newJMenuItem(撤销(Z)),newJMenuItem(剪切(X)),newJMenuItem(复制(C)),newJMenuItem(粘贴(V)),newJMenuItem(删除(D)),newJMenuItem(全选(A)),};privateJTextAreatextArea;//文本区域privateJScrollPanejs;//滚动条privateJPaneljp;privateFileDialogopenFileDialog;//打开保存对话框privateFileDialogsaveFileDialog;privateToolkittoolKit;//获取默认工具包。privateClipboardclipboard;//获取系统剪切板privateStringfileName;//设置默认的文件名/***MiniEdit方法定义**实现记事本初始化***/publicMiniNote(){fileName=无标题;toolKit=Toolkit.getDefaultToolkit();clipboard=toolKit.getSystemClipboard();textArea=newJTextArea();js=newJScrollPane(textArea);jp=newJPanel();openFileDialog=newFileDialog(this,打开,FileDialog.LOAD);saveFileDialog=newFileDialog(this,另存为,FileDialog.SAVE);js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jp.setLayout(newGridLayout(1,1));jp.add(js);textArea.setComponentPopupMenu(popupMenu);//文本区域添加右键textArea.add(popupMenu);add(jp);setTitle(迷你记事本);setFont(newFont(TimesNewRoman,Font.PLAIN,15));setBackground(Color.white);setSize(800,600);你的姓名——《Java语言》课程期末作业16setJMenuBar(menuBar);menuBar.add(file);menuBar.add(edit);menuBar.add(format);menuBar.add(view);menuBar.add(help);for(inti=0;i4;i++){file.add(menuItem[i]);edit.add(menuItem[i+4]);}for(inti=0;i3;++i){edit.add(menuItem[i+15]);}for(inti=0;i2;++i){format.add(menuItem[i+8]);help.add(menuItem[i+11]);}view.add(menuItem[10]);file.add(menuItem[14]);for(inti=0;i6;++i){popupMenu.add(menuItem1[i]);}//窗口监听addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){e.getWindow().dispose();System.exit(0);}});//注册各个菜单项的事件监听器for(inti=0;imenuItem.length;i++){menuItem[i].addActionListener(this);}for(inti=0;imenuItem1.length;i++){menuItem1[i].addActionListener(this);}}你的姓名——《Java语言》课程期末作业17/***action
本文标题:Java课程设计(文本编辑器)
链接地址:https://www.777doc.com/doc-5317478 .html