




免费预览已结束,剩余24页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告书课程名称 面向对象程序设计 设计题目 文本编辑器的设计与实现 专业班级 学 号 姓 名 指导教师 年 月目录1 设计时间12 设计目的13设计任务14 设计内容14.1需求分析14.2概要设计14.2.1功能结构图14.3详细设计24.3.1流程图34.4系统的功能实现44.4.1类或包的加载54.4.2设计一个主类,变量的定义54.4.3文件操作功能的实现64.5运行测试254.5.1文本编辑器界面254.5.2各功能菜单界面255 总结与展望26参考文献26成绩评定271 设计时间2011年12月19日2011年12月25日2 设计目的本次设计是学习完java6程序设计 课程后进行的一次全面的综合练习,目的是加深对本学期课程的理解,通过设计文本编辑器并实现其功能来熟练掌握java语言基础,初步掌握软件开发的基本方法与技术将理论课程中学到的知识运用到实践中,实现有一定规模的Java应用。3设计任务本次设计的主要任务是文本编辑器的设计与实现,要求设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。4 设计内容 4.1需求分析现在网络上各种文本编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad+,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的文本编辑器程序。4.2概要设计4.2.1功能结构图新建文件菜单保存打开另存为退出剪切编辑菜单替换复制全部替换粘贴文本编辑器插入文本删除自动换行颜色字体格式菜单向前查找查找菜单向后查找关于帮助主题帮助菜单4.3详细设计文件菜单4.3.1流程图 (1)文件:打开另存为保存选择文件存放位置选择打开文件位置确定编辑菜单(2)编辑:替换插入文本全部替换输入查找和替换内容输入要插入的文本确定格式(3)格式:颜色字体选择所需字体选择所需颜色确定查找(4)查找:向后查找向前查找输入查找内容确定(5)其他各功能菜单可直接点击完成操作4.4系统的功能实现4.4.1类或包的加载import java.awt.*;import java.awt.event.*;import java.awt.datatransfer.*;import javax.swing.*;import java.io.*;import java.lang.*;4.4.2设计一个主类,变量的定义public class Notepad extends JFrame private final Color colorvalues = Color.black, Color.blue, Color.red, Color.green ; /定义颜色数组 String styleNames = Bold, Italic ;/定义风格数组 String fontNames = 宋体, 华文行楷, 隶书 ;/字体数组 String sizeString = new String30;/字号数组 int size = new int30;/与字号数组对应的字号整数,用于设置文字大小 private JRadioButtonMenuItem colorItems, fonts; private JCheckBoxMenuItem styleItems; private JTextArea displayText;/定义文本编辑区 private ButtonGroup fontGroup, colorGroup;/字体组,跟字色组 private int style;/字体风格 private JScrollPane scroll;/为文本编辑区提供滚动条 private String selectText = ;/存放文本编辑区中选中的文本内容 private JComboBox styleBox,fontBox,sizeBox;/工具栏 private JPanel toolPanel;/存放工具栏 private int rowNumber = 0; private FileDialog fd = new FileDialog(this); / set up GUI public Notepad() super( 记事本 );/标题 /创建菜单条 JMenuBar bar = new JMenuBar(); setJMenuBar( bar ); /*-*/4.4.3文件操作功能的实现 / 设置文件菜单及其菜单项 JMenu fileMenu = new JMenu( 文件(F) ); fileMenu.setMnemonic( F ); / 设置新建菜单项 JMenuItem newItem = new JMenuItem( 新建(N) ); newItem.setMnemonic( N ); 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 ); openItem.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);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(); /加分隔线 / 设置保存菜单项 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(保存);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(); /刷新该流的缓冲,然后关闭该流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 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 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) ); 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( 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 = displayText.getSelectionStart();/选定的文本的开始位置int end = displayText.getSelectionEnd();/选定的文本的结束位置displayText.replaceRange(, start, end);/*用指定替换文本替换指定开始位置与结束位置之间的文本。 这里指定替换文本为空,即为剪切了文本*/ ); /复制菜单选项 JMenuItem copyItem = new JMenuItem( 复制(C) ); copyItem.setMnemonic( C ); editMenu.add( copyItem ); copyItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) selectText = displayText.getSelectedText();/获得选中的内容,并保存在selectText里 ); /粘贴的实现 JMenuItem pasteItem = new JMenuItem( 粘贴(P) ); pasteItem.setMnemonic( P ); editMenu.add( pasteItem ); pasteItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) int position = displayText.getCaretPosition();/获得鼠标当前位置 displayText.insert( selectText,position );/插入到鼠标当前位置 ); editMenu.addSeparator();/加分隔线 /替换的实现 JMenuItem swapItem = new JMenuItem( 替换(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 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();/获得整个文本内容 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 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(lookupLabel); 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); ); 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 insertLabel=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); ); /删除子菜单 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(); 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.setMnemonic( 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 = 黑色, 蓝色, 红色, 绿色 ; 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 colors.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.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 JRadioButtonMenuItem( 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.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 JMenu( 查找(S) ); searchMenu.setMnemonic( H ); /添加向前查找菜单项 JMenuItem frontItem = new JMenuItem( 向前查找(F) ); frontItem.setMnemonic( F ); searchMenu.add( frontItem ); frontItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) 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.getCaretPosition();/取得当前的光标位置 int lastfromIndex=text.indexOf(inputText.getText(),fromIndex);/获得查找后的位置 displayText.setCaretPosition(lastfromIndex); displayText.moveCaretPosition(lastfromIndex+inputText.getText().length();/使查找到的子字符串显示出来 ); /添加向后查找菜单项 JMenuItem backItem = new JMenuItem( 向后查找(B) ); 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(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(lastfromIndex); 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() public void actionPerformed( ActionEvent event ) JOptionPane.showMessageDialog( Notepad.this, 文本编辑器n财升本11-2班, 关于, JOptionPane.PLAIN_MESSAGE ); rowNumber = displayText.getRows(); JOptionPane.showMessageDialog(null,+ rowNumber); ); /添加帮助菜单项 JMenuItem helpItem = new JMenuItem( 帮助主题(H). ); helpItem.setMnemonic( H ); helpMenu.add( helpItem ); helpItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) JTextArea helpText = new JTextArea( 格式里的自动换行说明:单击一次切换功能n只能实现整个文本的风格,字体等的设置n+ 复制,粘贴可以实现插入到鼠标当前位置n标题栏显示行数); JScrollPane scroller = new JScrollPane(helpText); JOptionPane.showMessageDialog(null,scroller); ); bar.add( helpMenu ); /添加/*-*/ /设置字体选项
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色建筑幕墙劳务分包工程合同范本
- 2025东航大客户航空安全培训服务合同
- 肩关节运动康复新策略-洞察及研究
- 2025年新型防盗门窗产品销售代理协议
- 2025年度第三方保密协议与数据传输安全规范模板
- 2025年度地暖垫层施工质量保证与售后服务承包合同范本
- 2025版蔬菜种植基地土地流转承包合同
- 2025版食品添加剂研发委托生产合作协议
- 2025年新能源设备采购合同补充协议范本
- 2025年度山地草场使用权流转合同
- 放射科质控汇报
- 眼科学教学课件:绪论
- GB/T 31091-2014煤场管理通用技术要求
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- 万东GFS型高频高压发生装置维修手册
- 公寓de全人物攻略本为个人爱好而制成如需转载注明信息
- 企业经营沙盘模拟实训指导书
- 汉密尔顿抑郁量表17项
- 《现代物流管理》第一章-导论(课用)
- 智能制造生产线运营与维护课件完整版
- 树木清障专项施工方案
评论
0/150
提交评论