软件学院课程设计报告书课程名称设计题目文本编辑器的设计与实现专业班级XXXXXXXXXXX学号xxxxxxxxxx姓名xxx指导教师2011年11月1设计时间2011年11月2设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。3设计任务文本编辑器的设计与实现:设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。4设计内容4.1需求分析需求分析的任务是确定功能必须完成的工作,也就是对目标系统提出完整、准确、清晰、具体的要求。简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能。4.2概要设计4.2.1程序基本功能概括图4.2.1功能架构图4.2.2程序主要组件概括1.基本的Frame框架;2.菜单;3.打开文件对话框;4.保存文件对话框;5.颜色对话框;6.Choice下拉列表,运来实现字体设置;7.简单的帮助框架。4.3详细设计4.3.1文件打开与保存文本编辑器格式编辑黏贴打开菜单保存新建退出另存为文件剪切黏贴查找复制字体字号插入对象替换文本编辑器的保存和打开功能的实现用文件对话框及输入输出流来完成。先建立打开和保存对话框,在publicvoidactionPerformed(ActionEvente)里分别用FileWriter()和FileReader()方法实现保存和打开。filedialog_save=newFileDialog(this,保存文件对话框,FileDialog.SAVE);filedialog_save.setVisible(false);filedialog_load=newFileDialog(this,保存文件对话框,FileDialog.LOAD);filedialog_load.setVisible(false);filedialog_save.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){filedialog_save.setVisible(false);}});filedialog_load.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){filedialog_load.setVisible(false);}});publicvoidactionPerformed(ActionEvente){if(e.getSource()==itemSave){filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null){try{Filefile=newFile(filedialog_save.getDirectory(),filedialog_save.getFile());tofile=newFileWriter(file);out=newBufferedWriter(tofile);out.write(area.getText(),0,(area.getText()).length());out.close();tofile.close();}catch(IOExceptione1){}}}elseif(e.getSource()==itemLoad){filedialog_load.setVisible(true);area.setText(null);Strings;if(filedialog_load.getFile()!=null){try{Filefile=newFile(filedialog_load.getDirectory(),filedialog_load.getFile());file_reader=newFileReader(file);in=newBufferedReader(file_reader);while((s=in.readLine())!=null)area.append(s+'\n');in.close();file_reader.close();}catch(IOExceptione1){}}}4.3.2字体,字形,字体大小的设置文本编辑器要实现对字体的设置,选用了GraphicsEnvironment对象调用String[]getAvailableFontFamilyNames()方法,该方法可以获取计算机上所有可用的字体名称,并存放到字符串数组中。Choicelist;GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();StringfontName[]=ge.getAvailableFontFamilyNames();publicvoiditemStateChanged(ItemEvente){Stringname=list.getSelectedItem();Fontf=newFont(name,Font.PLAIN,15);area.setFont(f);}elseif(e.getSource()==item8)//设置字形(常规,倾斜,加粗){Fontfont=area.getFont();intstyle=font.getStyle();style=style^0;area.setFont(newFont(,style,font.getSize()));}elseif(e.getSource()==item9){Fontfont=area.getFont();intstyle=font.getStyle();style=style^2;area.setFont(newFont(,style,font.getSize()));}elseif(e.getSource()==item10){Fontfont=area.getFont();intstyle=font.getStyle();style=style^1;area.setFont(newFont(,style,font.getSize()));}elseif(e.getSource()==item11)//设置字体大小{Fontfont=area.getFont();intstyle=font.getStyle();area.setFont(newFont(font.getName(),style,12));}elseif(e.getSource()==item12){Fontfont=area.getFont();intstyle=font.getStyle();area.setFont(newFont(font.getName(),style,24));}elseif(e.getSource()==item13){Fontfont=area.getFont();intstyle=font.getStyle();area.setFont(newFont(font.getName(),style,36));}4.3.3剪切,复制,粘贴设置文本编辑器中关于剪切,复制,粘贴功能的实现选用处理JTextArea的DocumentEvent事件,通过area.cut(),area.copy(),area.paste()方法,点击“编辑”中相应菜单项可以选择将文本区中选中的内容剪切,复制,粘贴。publicvoidchangedUpdate(DocumentEvente){Strings=area.getText();}publicvoidremoveUpdate(DocumentEvente){changedUpdate(e);}publicvoidinsertUpdate(DocumentEvente){changedUpdate(e);}publicvoidactionPerformed(ActionEvente){elseif(e.getSource()==item2){area.cut();}elseif(e.getSource()==item3){area.copy();}elseif(e.getSource()==item4){area.paste();}}4.3.4插入子菜单,删除子菜单,创建格式菜单及其菜单项JMenuIteminsertItem=newJMenuItem(插入文本(K));insertItem.setMnemonic('K');editMenu.add(insertItem);insertItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){JPanelinsertPanel=newJPanel();JLabelinsertLabel=newJLabel(要插入的内容);JTextFieldinputText=newJTextField(10);insertPanel.add(insertLabel);insertPanel.add(inputText);JOptionPane.showMessageDialog(null,insertPanel);intfromIndex=displayText.getCaretPosition();//取得当前的光标位置displayText.insert(inputText.getText(),fromIndex);}});JMenuItemRemoveItem=newJMenuItem(删除(G));RemoveItem.setMnemonic('G');editMenu.add(RemoveItem);RemoveItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){intstart=displayText.getSelectionStart();intend=displayText.getSelectionEnd();displayText.replaceRange(null,start,end);}});editMenu.addSeparator();bar.add(editMenu);//addeditMenuJMenuformatMenu=newJMenu(格式(R));formatMenu.setMnemonic('R');4.3.5创建,添加帮助菜项JMenuhelpMenu=newJMenu(帮助(H));helpMenu.setMnemonic('H');JMenuItemhelpItem=newJMenuItem(帮助主题(H).
本文标题:java文本编辑器
链接地址:https://www.777doc.com/doc-6179869 .html