当前位置:文档之家› 面向对象程序设计—文本编辑器的设计与实现

面向对象程序设计—文本编辑器的设计与实现

课程设计报告书课程名称面向对象程序设计设计题目文本编辑器的设计与实现专业班级学号姓名指导教师年月目录1 设计时间 (1)2 设计目的 (1)3设计任务 (1)4 设计内容 (1)4.1需求分析 (1)4.2概要设计 (1)4.2.1功能结构图 (1)4.3详细设计 (2)4.3.1流程图 (3)4.4系统的功能实现 (4)4.4.1类或包的加载 (5)4.4.2设计一个主类,变量的定义 (5)4.4.3文件操作功能的实现 (6)4.5运行测试 (25)4.5.1文本编辑器界面 (25)4.5.2各功能菜单界面 (25)5 总结与展望 (26)参考文献 (26)成绩评定 (27)1 设计时间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 ng.*;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 String[30];//字号数组int[] size = new int[30];//与字号数组对应的字号整数,用于设置文字大小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 GUIpublic 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.SA VE);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.SA VE);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);/*用指定替换文本替换指定开始位置与结束位置之间的文本。

相关主题