基于Java的文本编辑软件的设计与实现
java课程设计报告记事本
Java课程设计报告:记事本1. 引言记事本是一款常见的文本编辑工具,广泛应用于日常工作和学习中。
本文将介绍一种基于Java语言开发的简易记事本设计方案。
2. 设计思路2.1 界面设计记事本的界面应简洁明了,方便用户进行文本编辑和操作。
可以考虑使用Swing或JavaFX等图形库来创建用户界面。
2.1.1 主窗体记事本的主窗体应包含一个菜单栏和一个文本编辑区域。
菜单栏包含文件、编辑、格式等功能项,可以使用Java提供的菜单组件来实现。
2.1.2 文件操作在菜单栏的文件功能项中,应包含新建、打开、保存、另存为等操作。
这些功能可以通过文件选择对话框来实现。
2.1.3 文本编辑文本编辑区域应支持基本的编辑功能,如复制、粘贴、剪切和撤销等操作。
可以使用Java提供的文本框组件来实现。
2.2 功能设计记事本的功能设计应满足用户的基本需求,如文本编辑、保存和打开文件等。
2.2.1 文本编辑功能用户可以在文本编辑区域输入和编辑文本内容。
可以提供字体、颜色和对齐等格式设置功能。
2.2.2 文件操作功能用户可以通过菜单栏的文件功能项进行文件的新建、打开、保存和另存为等操作。
可以使用Java的文件IO功能来实现。
2.3 实现步骤2.3.1 创建主窗体首先,需要创建一个主窗体,并设置合适的大小和布局。
可以使用Swing或JavaFX提供的窗体组件来实现。
2.3.2 添加菜单栏在主窗体中添加一个菜单栏,并设置合适的菜单和菜单项。
可以使用Java提供的菜单和菜单项组件来实现。
2.3.3 添加文件操作功能在菜单栏的文件功能项中添加新建、打开、保存和另存为等功能,并实现相应的事件处理。
可以使用Java提供的文件选择对话框和文件IO功能来实现。
2.3.4 添加文本编辑功能在主窗体中添加一个文本编辑区域,并提供复制、粘贴、剪切和撤销等编辑功能。
可以使用Java提供的文本框组件和编辑功能来实现。
3. 实现代码以下是一个简单记事本的Java代码示例:import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;public class Notepad extends JFrame {private JTextArea textArea;private JFileChooser fileChooser;public Notepad() {setTitle("记事本");setSize(600, 400);setDefaultCloseOperation(EXIT_ON_CLOSE);createMenuBar();textArea = new JTextArea();JScrollPane scrollPane = new JScrollPane(textArea);add(scrollPane, BorderLayout.CENTER);fileChooser = new JFileChooser();setVisible(true);}private void createMenuBar() {JMenuBar menuBar = new JMenuBar();JMenu fileMenu = new JMenu("文件");JMenuItem newMenuItem = new JMenuItem("新建");JMenuItem openMenuItem = new JMenuItem("打开");JMenuItem saveMenuItem = new JMenuItem("保存");JMenuItem saveAsMenuItem = new JMenuItem("另存为");newMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {textArea.setText("");}});openMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showOpenDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedReader reader = new BufferedReader(new FileReader(file));String line;StringBuilder content = new StringBuilder();while ((line = reader.readLine()) != null) { content.append(line).append("\n");}reader.close();textArea.setText(content.toString());} catch (IOException ex) {ex.printStackTrace();}}}});saveMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showSaveDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedWriter writer = new BufferedWriter(new FileWriter(file));writer.write(textArea.getText());writer.close();} catch (IOException ex) {ex.printStackTrace();}}}});saveAsMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showSaveDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedWriter writer = new BufferedWriter(new FileWriter(file));writer.write(textArea.getText());writer.close();} catch (IOException ex) {ex.printStackTrace();}}}});fileMenu.add(newMenuItem);fileMenu.add(openMenuItem);fileMenu.add(saveMenuItem);fileMenu.add(saveAsMenuItem);menuBar.add(fileMenu);setJMenuBar(menuBar);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new Notepad();}});}}4. 总结本文介绍了一种基于Java语言开发的简易记事本设计方案。
基于java的文本编辑器开发
基于java的文本编辑器开发当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。
目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。
本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。
本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏以及树结构,还有链接Java虚拟机实现编译与运行。
使用SUN公司的Java中的GUI作为开发技术,利用其提供的各种类与接口,首先建立系统应用原型。
本文本编辑器的开发采用JDK6.0和 UltraEdit为开发工具,操作系统为Windows98/Windows 2000/Windows XP等。
目录1 前言 (3)2 问题的提出及可行性研究 (4)2.1问题的提出及定义 (4)2.2可行性研究 (5)2.2.1 对现行文本编辑器的分析 (5)2.2.2 新文本编辑器的可行性研究分析 (5)3 用户需求分析 (7)3.1用户调查 (7)3.2确定目标系统的功能 (7)4 系统设计与开发环境 (8)4.1系统相关类的设计 (8)4.2开发语言及其开发环境 (12)4.2.1开发语言概述 (12)4.2.2 Java开发环境——JDK的介绍 (14)4.3环境变量的设置 (15)4.3.1.环境变量的作用 (15)4.3.2 如何设置环境变量 (16)5 关键技术和源代码的实现 (18)5.1关键技术剖析 (18)5.2源码分析 (19)6 系统测试 (46)6.1测试方案 (46)6.2测试项目 (46)6.3编辑器截图演示 (47)1 前言Java可以方便的开发GUI程序,在Java语言提供的GUI构建工具中,可以分为“组件(component)”和“容器”(container)两种。
java文本编辑器的设计与实现 2
摘要当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。
目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。
本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。
本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏以及树结构,还有链接Java虚拟机实现编译与运行。
使用SUN公司的Java中的GUI作为开发技术,利用其提供的各种类与接口,首先建立系统应用原型。
本文本编辑器的开发采用JDK6.0和 UltraEdit为开发工具,操作系统为Windows98/Windows 2000/Windows XP等。
关键词:面向对象程序设计,GUI,文本编辑器,编译,运行AbstractNow, computer and internet are experience a sharp development, the information automatic function is more and more powerful, and our society is stepping in the information age. So, more Intelligence and more specialized soft are needed to help us improve the efficiency in job.At present the text editor type are many, the function provided are also many too, But can satisfy the user for many kinds of functions and can use Java for the translation and debug are very few, so can not adapt current user's request much better. This design completes the text editor function is aims at the Java beginner who study the Java program language, Therefore we use the Java programming hypothesized machine and software form an entire set of complete compilation code to the formation user's application process, translation, debug.This text editor's development mainly includes the contact of surface menu of the window and the tool fence as well as the tree structure, also links to the java hypothesized machine to the translation and debug. Use Java GUI API, and the classes of SUN Corporation to found the initial prototype system, then, carries on the demand iteration to the initial prototype system, unceasingly reversing and improvement, until forms the feasible system.This text editor's development uses JDK6.0 and Ultra Edit as the development kit, operate system for Windows98/ Windows 2000/ Windows/XP Keywords: OOP, java, GUI(Graphical User Interface),text editor, translation, debug.目录1 前言 (1)2 问题的提出及可行性研究 (2)2.1问题的提出及定义 (2)2.2可行性研究 (2)2.2.1 对现行文本编辑器的分析 (2)2.2.2 新文本编辑器的可行性研究分析 (2)3 用户需求分析 (4)3.1用户调查 (4)3.2确定目标系统的功能 (4)4 系统设计与开发环境 (5)4.1系统相关类的设计 (5)4.2开发语言及其开发环境 (9)4.2.1开发语言概述 (9)4.2.2 Java开发环境——JDK的介绍 (11)4.3环境变量的设置 (12)4.3.1.环境变量的作用 (12)4.3.2 如何设置环境变量 (13)5 关键技术和源代码的实现 (15)5.1关键技术剖析 (15)5.2源码分析 (15)6 系统测试 (33)6.1测试方案 (33)6.2测试项目 (34)6.3编辑器截图演示 (34)致谢 (35)参考文献 (36)1 前言Java可以方便的开发GUI程序,在Java语言提供的GUI构建工具中,可以分为“组件(component)”和“容器”(container)两种。
java案例分析与设计 实验1 文本编辑软件
综合实验一文本编辑软件一、实验目的掌握编写图形界面的方法,包括菜单、布局管理器、滚动条、弹出提示信息对话框、输入对话框、打开文件对话框、保存文件对话框、事件处理,以及文本文件的读写。
二、实验环境PC系列微机,Windows XP。
Eclipse、JDK150或更高版本。
三、实验内容利用8个学时的时间完成编写一个文本编辑软件,要求:1、具有菜单,包括如下菜单:文件:新建、打开、保存、退出编辑:复制、粘贴、查找、替换帮助:关于如图所示:2、刚运行时默认是新建状态,可以直接在文本去输入文字内容,单击保存时,如果还没有保存过则提示输入文件名,如果不是第一次保存,则直接保存到原来的文件名。
3、单击打开菜单时,要用户选择一个文本文件,然后把文件内容读取并显示到文本编辑区(用JTextArea实现),单击保存时,不用再提示输入文件名,直接保存到原来的打开时的文件名,文件名要显示到标题栏(同时文件名应该保存到属性变量中)4、单击保存菜单时,要判断是否是第一次新建或默认运行时的状态,如果是,则提示输入文件名,然后保存到文件中去;否则,直接保存到原来的文件名里即可。
5、单击退出菜单,直接退出系统。
6、单击复制菜单时,将选中的文本复制到粘贴板。
7、单击粘贴菜单时,将粘贴板中的内容复制到光标所在的文本位置。
8、单击查找菜单时,提示输入要查找的内容,并把查找到的内容选中。
9、单击替换菜单时,提示输入要替换成的内容,并进行替换(只替换第一个找到的结果即可,其他的可以多次替换来完成)10、单击关于菜单时,显示一个作者和版权信息即可。
提示,可能用到的类主要有:JFrameBorderLayoutJTextAreaJScrollPaneJMenuBarJMenuJMenuItemJFileChooserJOptionPaneFileReaderFileWriter可能用到的属性变量有:JMenuBar mb=null;//菜单栏JTextArea ta=null;//文本编辑区String fileName="";//当前文件名boolean isNewFile=true;//是否新建文件,true:是新建文件,没有保存过文件名,false:旧文件,或已经保存过String findValue="";//要查找的文字String replaceValue="";//替换成的目标文字四、实验报告写出合格的实验报告,至少包括以下内容1、实验目的2、源程序代码3、将涉及到的类和方法在本软件中的用法进行总结。
基于java的记事本程序课程设计成稿
1 问题描述设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、设置字体和颜色等功能。
这次课程设计由**、**和我三个人合作完成。
**主要负责3概要设计和5测试分析。
**4.1GUI程序界面设计,我负责4. 2JM4类的实现。
由于4.3事件处理和撰写程序关系密切,这两项都由**负责。
2 需求分析本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“格式”、“帮助”四个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
(3)、“编辑”有“剪切”、“复制”、“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字。
(4)、“格式”中,有“字体”、“颜色”两个子菜单:用于设置文字的字体而和颜色,字体有“宋体”、“楷体”、“黑体”颜色有“红”、“蓝”、“绿”。
(5)、“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。
(6)、还有弹出菜单也能实现“剪切”、“复制”、“粘贴”三个子菜单的功能。
3 概要设计3.1自定义类说明3.1.1 类名: JM(1)作用: 主类(2)继承的父类: JFrame类(3)成员变量说明:JMenuBar mb=new JMenuBar(); //定义一个菜单项/******定义各个菜单及其菜单项******/JMenu m1=new JMenu("文件(F)");JMenuItem n=new JMenuItem("新建");JMenuItem open=new JMenuItem("打开(O)... Ctrl+O"); JMenuItem save=new JMenuItem("保存(S)... Ctrl+S"); JMenuItem save_as=new JMenuItem("另存为(A)...Ctrl+A"); JMenuItem exit=new JMenuItem("退出");JMenu m2=new JMenu("编辑(E)");JMenuItem copy=new JMenuItem("复制(C) Ctrl+C"); JMenuItem cut=new JMenuItem("剪切(X) Ctrl+X"); JMenuItem paste=new JMenuItem("粘贴(P) Ctrl+P");JMenu m3=new JMenu("格式(O)");JMenu f1=new JMenu("字体(F)");JMenuItem i11=new JMenuItem("宋体");JMenuItem i12=new JMenuItem("楷体");JMenuItem i13=new JMenuItem("黑体");JMenu color=new JMenu("颜色(C)");JMenuItem i21=new JMenuItem("红");JMenuItem i22=new JMenuItem("蓝");JMenuItem i23=new JMenuItem("绿");JMenu m4=new JMenu("帮助(H)");JMenuItem about=new JMenuItem("关于");/*****定义弹出菜单及其菜单项*****/JPopupMenu pm=new JPopupMenu();JMenuItem item1=new JMenuItem("复制");JMenuItem item2=new JMenuItem("剪切");JMenuItem item3=new JMenuItem("粘贴");/***********编辑区**********/String s;Container c;JTextArea editor=new JTextArea(s);(4)主要方法说明:JM( )方法创建一个窗口并设置窗口的相应参数,以及把各个项目加到窗上private void addJMenuBar( )方法把各个菜单添加到菜单棒上private void addFileMenu( ) private void addEditMenu( ) private void addFormMenu( ) private void addHelpMenu( ) private void addJPopupMenu( )各个方法则把相应的菜单项添加到各自的“文件”、“编辑”、“格式”、“帮助”菜单上,及弹出菜单上3.1.2 类名: JM4(1)作用: 主类(2)继承的父类: JM类(3)主要成员方法说明:编辑区键盘事件:KeyListener类如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;editor.addKeyListener( new KeyAdapter(){public void keyTyped(KeyEvent e){flag=1;}});窗口的事件监听:windowListener类;class windowListener extends WindowAdapter{public void windowClosing(WindowEvent e){if(flag==0)System.exit(0);else close();}}菜单项的事件监听:ActionListener类;public void actionPerformed(ActionEvent e){Font f2=editor.getFont();JMenuItem mi=(JMenuItem) e.getSource();……}3.2 程序流程图3.2.1主流程图3.2.5 弹出菜单操作流程图3.2.6 “帮助”菜单操作流程图4 详细设计4.1 GUI程序界面设计import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class JM extends JFrame{JMenuBar mb=new JMenuBar(); //定义一个菜单项/******定义各个菜单及其菜单项******/JMenu m1=new JMenu("文件(F)");JMenuItem n=new JMenuItem("新建");JMenuItem open=new JMenuItem("打开(O)... Ctrl+O"); JMenuItem save=new JMenuItem("保存(S)... Ctrl+S"); JMenuItem save_as=new JMenuItem("另存为(A)...Ctrl+A"); JMenuItem exit=new JMenuItem("退出");JMenu m2=new JMenu("编辑(E)");JMenuItem copy=new JMenuItem("复制(C) Ctrl+C"); JMenuItem cut=new JMenuItem("剪切(X) Ctrl+X"); JMenuItem paste=new JMenuItem("粘贴(P) Ctrl+P");JMenu m3=new JMenu("格式(O)");JMenu f1=new JMenu("字体(F)");JMenuItem i11=new JMenuItem("宋体"); JMenuItem i12=new JMenuItem("楷体"); JMenuItem i13=new JMenuItem("黑体");JMenu color=new JMenu("颜色(C)");JMenuItem i21=new JMenuItem("红");JMenuItem i22=new JMenuItem("蓝");JMenuItem i23=new JMenuItem("绿");JMenu m4=new JMenu("帮助(H)");JMenuItem about=new JMenuItem("关于");/*****定义弹出菜单及其菜单项*****/ JPopupMenu pm=new JPopupMenu();JMenuItem item1=new JMenuItem("复制"); JMenuItem item2=new JMenuItem("剪切"); JMenuItem item3=new JMenuItem("粘贴");/***********编辑区**********/String s;Container c;JTextArea editor=new JTextArea(s);Font t=new Font("sanserif",Font.PLAIN,12);JM(){super("记事本");setSize(500,400);try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelCla ssName());}catch(Exception e){System.err.println("不能设置外观的原因;"+e);}c = getContentPane();c.add(new JScrollPane(editor));addFileMenu();addEditMenu();addFormMenu();addHelpMenu();addJMenuBar();addJPopupMenu();setJMenuBar(mb);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/******把菜单项加到菜单上******/private void addFileMenu(){m1.add(n);m1.add(open);m1.add(save);m1.add(save_as);m1.addSeparator();m1.add(exit);m1.setFont(t);}private void addEditMenu() {m2.add(copy);m2.add(cut);m2.addSeparator();m2.add(paste);m2.setFont(t);}private void addFormMenu() {m3.add(f1);m3.add(color);m3.setFont(t);f1.add(i11);f1.add(i12);f1.add(i13);color.add(i21);color.add(i22);color.add(i23);}private void addHelpMenu() {m4.add(about);m4.setFont(t);}private void addJMenuBar() {mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4);mb.setBackground(Color.cyan);}private void addJPopupMenu(){editor.add(pm);pm.add(item1);pm.add(item2);pm.add(item3);}public static void main(String arg[]){new JM();}}4.2 JM4类的实现import java.io.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.awt.Font.*;public class JM4 extends JM implements ActionListener,MouseListener//EventListener{int flag=0;public JM4(){/**********监听器接口**********/n.addActionListener(this);open.addActionListener(this);save.addActionListener(this);save_as.addActionListener(this);exit.addActionListener(this);copy.addActionListener(this);cut.addActionListener(this);paste.addActionListener(this);i11.addActionListener(this);i12.addActionListener(this);i13.addActionListener(this);i21.addActionListener(this);i22.addActionListener(this);i23.addActionListener(this);about.addActionListener(this);item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);editor.addMouseListener(this);addWindowListener(new windowListener());4.3 事件处理4.3.1 编辑区键盘事件处理/***************编辑区键盘事件******************/ editor.addKeyListener( new KeyAdapter(){public void keyTyped(KeyEvent e){flag=1;}});}4.3.2 窗口事件处理/**************窗口监听器**************/class windowListener extends WindowAdapter{public void windowClosing(WindowEvent e) {if(flag==0)System.exit(0);else close();}}4.3.3 菜单项事件处理/***************菜单项监听器****************/ public void actionPerformed(ActionEvent e){Font f2=editor.getFont();JMenuItem mi=(JMenuItem) e.getSource();if(mi==n) //新建{if(flag==0) editor.setText("");else close2();}if(mi==open) //打开{loadFile();}if(mi==save||mi==save_as) //保存和另存为{saveFile();}if(mi==exit) //退出{if(flag==0)System.exit(0); close();}if(mi==copy) //复制{editor.copy();}if(mi==cut) //剪切{editor.cut();}if(mi==paste) //粘贴{editor.paste();}if(mi==i11) //字体设置{editor.setFont(new java.awt.Font("宋体",java.awt.Font.PLAIN,f2.getSize()));}if(mi==i12){editor.setFont(new java.awt.Font("楷体",java.awt.Font.PLAIN,f2.getSize()));}if(mi==i13){editor.setFont(new java.awt.Font("黑体",java.awt.Font.PLAIN,f2.getSize()));}if(mi==i21) //字体颜色{ editor.setForeground(Color.red); }if(mi==i22){editor.setForeground(Color.blue);}if(mi==i23){editor.setForeground(Color.green);}if(mi==about) //帮助菜单的关于{String message = "----记事本----"+ "由梁**指导,***、**、**共同完成\n感谢您的使用!"; JOptionPane.showMessageDialog(JM4.this, message, "关于...",JOptionPane.PLAIN_MESSAGE);}/******弹出菜单********/if(mi==item1) //复制{editor.copy();}if(mi==item2) //剪切{editor.cut();}if(mi==item3) //粘贴{editor.paste();}}4.3.4 编辑区的鼠标事件事件处理/******编辑区的鼠标事件*********/public void mouseReleased(MouseEvent e){if(e.isPopupTrigger())pm.show(editor,e.getX(),e.getY());}public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mousePressed(MouseEvent e){}public static void main (String[] args) { JM4 d=new JM4();} }5 测试分析(1)程序运行界面如下:(2)“文件”菜单的菜单项:(3)“编辑”菜单的菜单项:(4)打开文件及另存文件时的界面:由于打开文件和另存文件都要寻找路径,所以开始时界面相同。
java文本编辑器实验报告
Java考核课程名称Java程序设计题目名称文本编辑器的设计与实现学生学院计算机学院专业班级计算机17(2)班学号**********学生姓名李泽豪指导教师赵锐2018 年12 月11 日一、课程题目编程实现一个文本编辑器使其具有新建、打开、保存,编辑(查找、替换、大小写转换等)、统计(字数、行数、字符数等)、格式(字体设置、字体大小、字体颜色、背景颜色等)等功能。
要求:基于JFrame窗体设计、使用菜单进行功能选择。
提示:字体颜色,背景颜色的设置,可使用javax.swing包中的JColorChooser类的静态方法showDialog()调用标准颜色对话框来完成;文件操作可通过javax.swing包中JColorChooser类中的showSaveDialog()、showOpenDialog()方法调用标准的的文件对话框来完成。
二、题目分析与设计2.1开发环境使用Eclipse开发软件2.2需求分析简单的文本编辑器提供给用户基本纯文本的文字编辑功能,能够读取计算机本地磁盘中的文本内容,将用户文本导入到磁盘中之中,以及实现基本的字体设置(字体,字号,字体颜色)简单的编辑字体的功能,以及统计(字数,行数,字符数),增强视觉体验的背景颜色功能等,简单而实用。
而网络上的各种编辑器,有的功能不足(如自带的记事本),而有些编辑器功能太繁杂,仅以日常应用方面来说,一个文本编辑器只需要简单的功能就够了。
2.3功能构架本程序要构建的文本编辑器按照题目要求,分为四个方面:(1)“文件”菜单:包括“新建”并提示是否保存已编辑内容,“打开”计算机本地磁盘的文本文件,主动“保存”自己已经编辑好的内容到电脑的磁盘或“另存为”新的文件之中,以及“退出”并提示是否保存已编辑的内容。
(2)“编辑”菜单:包括对已编辑文本的一个“查找与替换”功能,对已编辑英文文本的一个“大小写转换”功能。
(3)“格式”菜单:实现对文本的“字体”设置,“字体大小”以及“字体颜色”,还有能优化视觉体验的“背景颜色”的改变。
java实训报告文本编辑器的设计与实现
《Java实训》设计报告
文本编辑器的设计与实现
专业: 班级: 09-23 学号: 姓名:
软件技术
090123036 薛岳
石家庄科技信息职业学院 信息工程系
2011年10月15日
项目名称 项目简介
项目目的
replace();// 执行替换函数 } if (e.getActionCommand() == "帮助") {//帮助消息窗体
JOptionPane.showMessageDialog(this,"记事本程序!", "帮助", JOptionPane.PLAIN_MESSAGE);
} } } (1)成员变量 menustr是String型数组,是菜单栏的各个字符串。 menuitem1是JMenuItem数组,将为数组中的每个菜单项添加注册有ActionEvent事件监听器 (2)方法 main(String args[])方法是文本编辑器程序运行的入口方法。 addmyMenu() 菜单函数,生成菜单。 (3)效果图 窗口效果如图2所示。
6/8
java实训报告文本编辑器的设计与实现 西安心海建站()
三、项目总结 实训的时间很短,只有短短一周的时间,但是需要完成的工作很多,一个学期的java学习我们所 学的并不是很多,本次实训我选取的是文本编辑器的设计。虽然以前在c#中做过实训,但是c#是 在图形用户界面中进行窗体的设计,是对窗体和Windows控件的操作,而在java中需要用代码来 实现窗体的实例化和调用。是要通过代码来实例化和创建窗体,并通过代码来调用,引入了java 中的多个类来实现各个窗体和控件,并发现了自己的不足之处。 在窗体中需要加入文本编辑区来存储文本,这就需要创建文本对象并对其进行实例化,并且在编 辑菜单中还需要多个方法来实现对文本的操作和处理,比如剪切和复制,用到本身的函数来操作 。对于所有的菜单和菜单项以及控件所做才操作处理都需要注册其相应的监听事件来完成,而在 文件菜单中,打开的操作用到了文件的输入流,保存则用到了文本的输出流。而在打开事件中所 以遇到的错误在查阅了很多资料后在得以解决,并在此过程中学到了很多老师在课程中没有讲到 的知识,是自己受益匪浅,在文件菜单中的保存中,需要用if语句进行相应的判断,来执行不同 的代码实现,并与相应的异常处理语句相结合来完善程序,是代码哥哥具有健壮性和灵活性,减 少程序运行时错误出现。 在查找和替换中,对于查找函数则需要判断许多不同的情况来进行不同,尤其是要如何实现查找 和替换的功能是最关键的,需要使用什么样的方法来达到这一目的是最困难的,通过网络和同学 的讨论发现很多同学也遇到了这个问题,而采用现成的代码是行不通的,必须自己在实现中进行 一次次的修改,不断调整代码的运行方式来实现其功能。 四、心得体会 由于时间仓促,还有许多其他的功能没有,并在已实现的功能中也有不足的地方,还需要进一步 对其进行修改。再次过程中不断加深对java程序设计的认识和理解,丰富自己的知识,了解自己 的不足,加强自己的理解能力和学习能力,提高自己独立解决问题的能力。Java是一门全新的计 算机语言,需要自己对其全新的理解,而java的很多功能都需要在学习中去发现和理解,应用到 不同的设计中去,并结合网络这个以有利工具方便自己学习java的语言和强大的编码能力,以及 在以后的设计中把程序不断完善。
文本编辑器 java课程设计实验报告 完整 预览显示不全 含全部代码
淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 选题名称: 姓 名: 面向对象课程设计文本编辑器的设计与实现学号:专业班级: 系 (院) : 设计时间: 设计地点: 计算机工程学院 2010.6.21~2010.7.2 软件实验室、教室指导教师评语:成绩:签名:年 月 日面向对象课程设计报告第2页,共24页1.设计要求设计一个类似于 Windows 记事本(Notepad)的 Java 程序。
可以打开、新建、保存一个文本文件;对 选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、 查找、替换等) ;在文本中能够插入对象。
2.总体设计打开文 件保存另存为查找 红色 复制 字 体 颜 色退出编 辑蓝色剪切文 本 编 辑 器宋体绿色 粘贴字仿宋体楷体字 形粗体 斜体 常规字 号面向对象课程设计报告第3页,共24页3.详细设计JTextArea textarea;//建立文本 JRadioButtonMenuItem rbmi_red,rbmi_blue,rbmi_green;//鼠标右击改变颜色JMenuItem menuitem_copy,menuitem_cut,menuitem_paste,menuitem_seek;//复制, 剪切,粘贴 JMenuItem menuitem_song,menuitem_fang,menuitem_kai;//字体变量 JMenuItem menuitem_normal,menuitem_bold,menuitem_italic;//字形变量 JMenuItem menuitem_12,menuitem_24,menuitem_36;//字号变量 JMenuItem menuitem_exit,menuitem_infor; JPopupMenu popupmenu;//文本快捷键 JMenuItem menuitem_red,menuitem_green,menuitem_blue;//颜色变量 JDialog dialog;//调用对话框 JButton button_seek;//查找 JTextField textfield_seek; JLabel label_seek,label_infor;4.代码调试面向对象课程设计报告 程序代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.JColorChooser; import javax.swing.event.*; public class Notepad extends第4页,共24页JFrameimplementsActionListener,ItemListener,MouseListener { File file; JTextArea textarea; JRadioButtonMenuItem rbmi_red,rbmi_blue,rbmi_green;JMenuItem menuitem_copy,menuitem_cut,menuitem_paste,menuitem_seek; JMenuItem menuitem_song,menuitem_fang,menuitem_kai;//字体变量 JMenuItem menuitem_normal,menuitem_bold,menuitem_italic;//字形变量 JMenuItem menuitem_12,menuitem_24,menuitem_36;//字号变量 JMenuItem menuitem_exit,menuitem_infor; JMenuItem menuitem_zidingyi; JPopupMenu popupmenu; JMenuItem menuitem_red,menuitem_green,menuitem_blue; JDialog dialog; JButton button_seek; JTextField textfield_seek; JLabel label_seek,label_infor; String seek;public Notepad() { super("文本编辑器"); this.setSize(600,400); this.setLocation(250,150); this.setDefaultCloseOperation(HIDE_ON_CLOSE); textarea = new JTextArea();面向对象课程设计报告 Container ss=this.getContentPane();第5页,共24页JScrollPane dd=new JScrollPane(textarea); ss.add(dd); this.textarea.addMouseListener(this); this.addMenu(); this.setVisible(true); this.Dialog(); this.file = null; } public Notepad(String filename) { this(); if (filename!=null) { this.file = new File(filename); this.setTitle(filename); this.textarea.setText(this.readFromFile()); } } public Notepad(File file) { this(); if (file!=null) { this.file = file; this.setTitle(this.file.getName()); this.textarea.setText(this.readFromFile()); } } public void Dialog() { dialog=new JDialog(this,"查找",true); dialog.setLayout(new FlowLayout()); //建立对话框的方法面向对象课程设计报告 dialog.setSize(200,90); label_seek=new JLabel("关键字"); dialog.add(label_seek); textfield_seek=new JTextField(10); dialog.add(textfield_seek); button_seek=new JButton("查找"); dialog.add(button_seek); button_seek.addActionListener(this); } public void addMenu() { JMenuBar menubar = new JMenuBar(); this.setJMenuBar(menubar); JMenu menu_file = new JMenu("文件"); menubar.add(menu_file);第6页,共24页//文件菜单JMenuItem menuitem_open = new JMenuItem("打开"); menu_file.add(menuitem_open); menuitem_open.addActionListener(this); JMenuItem menuitem_save = new JMenuItem("保存"); menu_file.add(menuitem_save); menuitem_save.addActionListener(this); JMenuItem menuitem_saveas = new JMenuItem("另存为"); menu_file.add(menuitem_saveas); menuitem_saveas.addActionListener(this); menuitem_exit=new JMenuItem("退出" ); menu_file.add(menuitem_exit); menuitem_exit.addActionListener(this); JMenu menu_editor=new JMenu("编辑");//编辑菜单 menubar.add(menu_editor); menuitem_seek=new JMenuItem("查找"); menu_editor.add(menuitem_seek); menuitem_seek.addActionListener(this); menuitem_copy=new JMenuItem("复制");面向对象课程设计报告 menuitem_copy.addActionListener(this); menu_editor.add(menuitem_copy); menuitem_cut=new JMenuItem("剪切"); menu_editor.add(menuitem_cut); menuitem_cut.addActionListener(this); menuitem_paste=new JMenuItem("粘贴"); menu_editor.add(menuitem_paste); menuitem_paste.addActionListener(this);第7页,共24页JMenuItem menu_color=new JMenu("颜色");//颜色菜单 menu_editor.add(menu_color); ButtonGroup buttongroup=new ButtonGroup();rbmi_red=new JRadioButtonMenuItem("红",true); buttongroup.add(rbmi_red); menu_color.add(rbmi_red); rbmi_red.addItemListener(this); rbmi_blue=new JRadioButtonMenuItem("蓝",true); buttongroup.add(rbmi_blue); menu_color.add(rbmi_blue); rbmi_blue.addItemListener(this); rbmi_green=new JRadioButtonMenuItem("绿",true); buttongroup.add(rbmi_green); menu_color.add(rbmi_green); rbmi_green.addItemListener(this); JMenu menu_font=new JMenu("设置字体");//设置字体菜单 menubar.add(menu_font); menuitem_song=new JMenuItem("宋体"); menu_font.add(menuitem_song); menuitem_song.addActionListener(this); menuitem_fang=new JMenuItem("仿宋"); menu_font.add(menuitem_fang); menuitem_fang.addActionListener(this); menuitem_kai=new JMenuItem("楷体"); menu_font.add(menuitem_kai);面向对象课程设计报告 menuitem_kai.addActionListener(this);第8页,共24页JMenu menu_style=new JMenu("设置字形");//设置字形菜单 menubar.add(menu_style); menuitem_bold=new JMenuItem("粗体"); menu_style.add(menuitem_bold); menuitem_bold.addActionListener(this); menuitem_italic=new JMenuItem("斜体"); menu_style.add(menuitem_italic); menuitem_italic.addActionListener(this); menuitem_normal=new JMenuItem("常规"); menu_style.add(menuitem_normal); menuitem_normal.addActionListener(this); JMenu menu_size=new JMenu("设置字号"); menubar.add(menu_size); menuitem_12=new JMenuItem("12"); menu_size.add(menuitem_12); menuitem_12.addActionListener(this); menuitem_24=new JMenuItem("24"); menu_size.add(menuitem_24); menuitem_24.addActionListener(this); menuitem_36=new JMenuItem("36"); menu_size.add(menuitem_36); menuitem_36.addActionListener(this); popupmenu=new JPopupMenu(); JMenuItem menuitem_red=new JMenuItem("红色"); popupmenu.add(menuitem_red); menuitem_red.addActionListener(this); JMenuItem menuitem_green=new JMenuItem("绿色"); popupmenu.add(menuitem_green); menuitem_green.addActionListener(this); menuitem_blue=new JMenuItem("蓝色"); popupmenu.add(menuitem_blue); menuitem_blue.addActionListener(this); //快捷菜单 //设置字号菜单面向对象课程设计报告 textarea.add(popupmenu); }第 9 页,共 24 //向文本区内添加快捷菜单页public void writeToFile(String lines) { try {//写文件FileWriter fout = new FileWriter(this.file); fout.write(lines+"\r\n"); fout.close(); } catch (IOException ioex) { return; } } public String readFromFile() { try { FileReader fin = new FileReader(this.file); BufferedReader bin = new BufferedReader(fin); String aline="", lines=""; do { aline = bin.readLine(); if (aline!=null) lines += aline + "\r\n"; } while (aline!=null); bin.close(); fin.close(); return lines; } catch (IOException ioex) //读文件面向对象课程设计报告 { return null; } } public boolean openDialog() {第10页,共24页//打开对话框FileDialog filedialog = new FileDialog(this,"Open",FileDialog.LOAD); filedialog.setVisible(true); if ((filedialog.getDirectory()!=null) && (filedialog.getFile()!=null)) { this.file filedialog.getFile()); return true; } else return false; } public boolean saveDialog() { FileDialog filedialog = new FileDialog(this,"SaveAs",FileDialog.SAVE); filedialog.setFile(this.file.getName()); filedialog.setVisible(true); if ((filedialog.getDirectory()!=null) && (filedialog.getFile()!=null)) { this.file = new File(filedialog.getDirectory(), //保存对话框 = new File(filedialog.getDirectory(),filedialog.getFile()+".txt"); return true; } else return false; } public void actionPerformed(ActionEvent e) { //事件处理面向对象课程设计报告 if(e.getActionCommand()=="打开") { if (this.openDialog()) {第11页,共24页this.setTitle(this.file.getName()); this.textarea.setText(this.readFromFile()); } } if(e.getActionCommand()=="保存" && this.file!=null) { this.writeToFile(this.textarea.getText()); } if(e.getActionCommand()==" e.getActionCommand()=="另存为") { if (this.saveDialog()) { this.writeToFile(this.textarea.getText()); this.setTitle(this.file.getName()); } } if(e.getActionCommand()=="退出") { System.exit(0); } if(e.getSource()==menuitem_copy) { textarea.copy(); } if(e.getSource()==menuitem_paste) { textarea.paste(); } //编辑菜单的事件处理 保 存 " && this.file==null ||面向对象课程设计报告 if(e.getSource()==menuitem_cut) { textarea.cut(); } if(e.getSource()==menuitem_red) { textarea.setForeground(Color.red); } if(e.getSource()==menuitem_blue) { textarea.setForeground(Color.blue); } if(e.getSource()==menuitem_green) { textarea.setForeground(Color.green); } Font font=textarea.getFont(); int style=font.getStyle(); if(e.getSource()==menuitem_song) { textarea.setFont(new第12页,共24页//颜色菜单的事件处理//设置字体变量java.awt.Font("宋体",java.awt.Font.PLAIN,font.getSize())); } if(e.getSource()==menuitem_fang) { textarea.setFont(new java.awt.Font(" 仿 宋",java.awt.Font.PLAIN,font.getSize())); } if(e.getSource()==menuitem_kai) { textarea.setFont(new java.awt.Font(" 楷 体",java.awt.Font.PLAIN,font.getSize()));面向对象课程设计报告 } if(e.getSource()==menuitem_bold) { style=style^1;第13页,共24页//设置字形菜单的事件处理textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_italic) { style=style^2; textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_normal) { style=style^3; textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_12) { textarea.setFont(new java.awt.Font(font.getName(),style,12)); } if(e.getSource()==menuitem_24) { textarea.setFont(new java.awt.Font(font.getName(),style,24)); } if(e.getSource()==menuitem_36) { textarea.setFont(new java.awt.Font(font.getName(),style,36)); } if(e.getSource()==menuitem_seek) { dialog.setVisible(true); } seek=textarea.getText(); //查找菜单项的处理事件面向对象课程设计报告 第 String tseek=textfield_seek.getText(); if(e.getSource()==button_seek) { int i=textfield_seek.getText().length(); int j=seek.indexOf(tseek); textarea.setSelectionStart(j); textarea.setSelectionEnd(i+j); textfield_seek.setText(""); } } public void itemStateChanged(ItemEvent e) { if(e.getSource()==rbmi_red) { textarea.setForeground(java.awt.Color.red); } if(e.getSource()==rbmi_blue) { textarea.setForeground(java.awt.Color.blue); } if(e.getSource()==rbmi_green) { textarea.setForeground(java.awt.Color.green); } } public void mouseClicked(MouseEvent mec) { if (mec.getModifiers()==mec.BUTTON3_MASK)14页,共24页//ItemListener 事件处理方法//鼠标处理事件popupmenu.show(textarea,mec.getX(),mec.getY()); } public void mousePressed(MouseEvent mep) public void mouseReleased(MouseEvent mer) public void mouseEntered(MouseEvent mee) { { { } } }面向对象课程设计报告 public void mouseExited(MouseEvent mex) public void mouseDragged(MouseEvent med) public static void main(String arg[]) { new Notepad("文本编辑器"); } }第 { {15 页,共 } }24页//main 方法编译代码实现各种功能:打开任意目录下一文本文件:文件目录下“另存为”功能:面向对象课程设计报告第16页,共24页编辑目录下“查找”功能:编辑目录下“复制” “剪切” “粘贴”功能:面向对象课程设计报告第17页,共24页面向对象课程设计报告第18页,共24页字体设置功能:面向对象课程设计报告第19页,共24页编辑目录下“颜色“功能:设置字型功能:面向对象课程设计报告第20页,共24页设置字号功能:面向对象课程设计报告第21页,共24页运行完毕,可关闭窗口退出程序或点击文件目录下的“退出”功能面向对象课程设计报告第22页,共24页5. 软件发布面向对象课程设计报告 首先制作 Manifest 文件,代码如下; Manifest-Version:1.0 Mani-Class: notepad Created-Boy:1.6(Sun Microsystems Inc.) 保存为 Manifest.mf,保存在 D:\java 打开 CMD 在 DOS 下生成 jar 文件:第23页,共24页D:\java\jar cmf Notepad.jar Manifest.mf notepad.class 生成 JAR 文件,双击运行。
在macOS电脑上使用Java开发简单的文本编辑器
在macOS电脑上使用Java开发简单的文本编辑器在日常工作和学习中,文本编辑器是我们经常使用的工具之一。
在macOS电脑上,我们可以通过Java语言来开发一个简单的文本编辑器,以满足个性化的需求。
本文将介绍如何在macOS电脑上使用Java开发一个简单的文本编辑器,帮助读者了解基本的开发流程和技术要点。
1. 准备工作在开始开发之前,我们需要确保已经安装好Java开发环境(JDK)和集成开发工具(IDE),比如Eclipse或IntelliJ IDEA。
同时,我们还需要了解Swing GUI库,它是Java中用于构建图形用户界面的重要工具。
2. 创建项目首先,在IDE中创建一个新的Java项目,命名为TextEditor。
在项目中创建一个主类Main.java,这将是我们的文本编辑器的入口点。
接下来,我们需要创建一个GUI类TextEditorGUI.java,用于构建文本编辑器的用户界面。
3. GUI设计在TextEditorGUI.java中,我们可以使用Swing库来设计文本编辑器的GUI界面。
可以添加菜单栏、工具栏、文本区域等组件,以实现基本的文本编辑功能。
例如,可以添加“文件”、“编辑”、“格式”等菜单,并在菜单项中实现打开、保存、复制、粘贴等功能。
4. 文本编辑功能通过在TextEditorGUI.java中添加事件监听器和相应的处理方法,我们可以实现文本编辑器的基本功能。
比如,可以编写打开文件、保存文件、复制粘贴文本等功能的代码。
同时,还可以实现查找替换、撤销重做等高级功能,提升用户体验。
5. 主类编写在Main.java中,我们需要编写启动文本编辑器的代码。
可以创建一个TextEditor对象,并显示文本编辑器的GUI界面。
通过调用Swing的事件分发线程(Event Dispatch Thread),确保界面响应流畅。
6. 测试与调试完成代码编写后,我们需要进行测试和调试。
可以输入文本、保存文件、执行各种操作,检查文本编辑器是否正常运行。
课程设计----基于于JAVA的记事本编辑器的设计与实现
计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:文本编辑器的设计与实现姓名:学号:专业班级:D软件081系(院):计算机工程学院设计时间:2010.6.14~2010.6.27 设计地点:软件实验室、教室图2文本编辑器中的菜单:图3:字体选择下拉列表图4:文本编辑器文件对话框(保存文件对话框):图5:选择背景颜色对话框:图6:简单的帮助对话框:附录(程序代码)import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.JColorChooser;import javax.swing.*;import javax.swing.event.*;class Window extends Frame implements ActionListener,ItemListener,DocumentListener{FileDialog filedialog_save,filedialog_load;MenuBar menubar;Menu menu1,menu2,menu3,menu4,menu5,menu6;MenuItemitemSave,itemLoad,item1,item2,item3,item4,item5,item6,item7,item8,item9,item10,item11,item12,item13,item14,item15;Choice list;JTextArea area;BufferedReader in;FileReader file_reader;BufferedWriter out;FileWriter tofile;JScrollPane scrollpane;Window(String s){super(s);。
Java课程设计(文本编辑器)
《Java语言》课程期末作业题目第8题:文本编辑器学院专业班别学号姓名2010年12月14日一、课程题目第8题:文本编辑器制作一个简单的文本编辑器,交互性要求:【最大选题人数:8】(1) 可输入文字(仅要求英文及标点符号)(2) 实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正……(3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件二、题目分析与设计2.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
2.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能主要有以下几个方面:(1).菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。
(2)“文件”栏目分别有“新建”,“打开”,“保存”,“打印”,“退出”五个子菜单。
分别用于新建文件,打开文件,保存文件,打印文件和退出记事本。
(3)“编辑”栏目包括有“全选”,“复制”,“剪切”,“粘贴”,“查找”,“查找下一个”,“替换”七个字菜单。
用于全选文字,剪切文字,复制文字,粘贴文字,查找关键字,替换关键字等。
(4)“格式”栏目包括有“自动换行”,“字体”两个功能,点击自动换行可以实现文本自动换行,字体则提供了各种字形字号颜色等选择。
(5)“查看”栏目有“状态”功能。
(6)“帮助”栏目有“帮助主题”,“关于记事本”两个子菜单,帮助主题可以查看windows记事本帮助文件,关于记事本则是作者和版权信息。
Java课程设计—文本编辑器的设计与实现
面向对象课程设计报告第 1 页,共11 页主要代码:Write note;{// 新建选项File_bar_creat = this.AddItem("新建(N) Ctrl+N", File_bar);File_bar_creat.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){// 设置新文件内容text.setText("");}});//打开选项File_bar_open = this.AddItem("打开(O) Ctrl+O", File_bar);File_bar_open.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){try{jfc.setCurrentDirectory(new File("."));// 设置当前目录jfc.setFileFilter(new filter()); // 过滤文件jfc.setAcceptAllFileFilterUsed(false); // 全选文件jfc.showOpenDialog(null); // 弹出一个 "Open File" 文件选择器对话框。
file = jfc.getSelectedFile(); // 获取已经选择目录jsb = file.getName(); // 获取目录名setTitle(jsb); // 显示目录名int length = (int) (jfc.getSelectedFile()).length();1.程序运行主界面如图1示:图12.各个菜单基本构成如下图2、图3、图4、图5和图6所示:图2图3图4图63.依次选择文件目录下新建、打开、保存、另存为和退出按钮,运行结果如图7、图8、图9、图10所示:图7图8面向对象课程设计报告第11 页,共11 页图104.对于数据的编辑,该实验实现了剪切、复制、粘体、撤销和删除等基本功能。
基于Java的文本编辑软件的设计与实现_论文终稿(目录+正文部分)
目录1 绪论 (1)1.1课题研究的背景及意义 (1)1.2 文本编辑器软件的应用现状 (1)1.3 本文工作和结构安排 (2)1.3.1 本文主要工作 (2)1.3.2 本文结构安排 (3)1.4 小结 (3)2 相关技术介绍 (4)2.1 Java技术 (4)2.1.1 Java特点 (4)2.1.2 程序开发常用包 (5)2.2 小结 (6)3 系统分析与设计 (7)3.1 软件需求分析 (7)3.2 系统类设计 (8)3.3 系统总体设计 (13)3.3.1 设计原理 (15)3.3.2 功能模块划分 (15)3.4 小结 (17)4 详细设计与实现 (18)4.1 系统开发平台及工具选择 (18)4.2 主窗体设计与实现 (18)4.3 新建功能设计与实现 (20)4.3.1 新建功能概述 (20)4.3.2 新建功能技术分析 (20)4.3.3 新建功能实现过程 (21)4.4 打开功能设计与实现 (21)4.4.1 打开功能概述 (21)4.4.2 打开功能技术分析 (21)4.4.3 打开功能实现过程 (22)4.5保存功能设计与实现 (22)4.5.1 保存功能概述 (22)4.5.2 保存功能技术分析 (22)4.5.3 保存功能实现过程 (23)4.6 全选功能设计与实现 (23)4.6.1 全选功能概述 (23)4.6.2 全选功能技术分析 (23)4.6.3 全选功能实现过程 (23)4.7 退出功能设计与实现 (24)4.7.1 退出功能概述 (24)4.7.2 退出功能技术分析 (24)4.7.3 退出功能实现过程 (24)4.8 查找功能设计与实现 (25)4.8.1 查找功能概述 (25)4.8.2 查找功能技术分析 (25)4.8.3 查找功能实现过程 (25)4.9 查找下一个功能设计与实现 (26)4.9.1 查找下一个功能概述 (26)4.9.2 查找下一个功能技术分析 (26)4.9.3 查找下一个功能实现过程 (26)4.10 替换功能设计与实现 (27)4.10.1 替换功能概述 (27)4.10.2 替换功能技术分析 (27)4.10.3 替换功能实现过程 (28)4.11 设置字体功能设计与实现 (28)4.11.1 设置字体功能概述 (28)4.11.2 设置字体功能技术分析 (28)4.11.3 设置字体功能实现过程 (28)4.12 编译功能设计与实现 (29)4.12.1 编译功能概述 (29)4.12.2 编译功能技术设计 (29)4.12.3 编译功能实现过程 (30)4.13 运行功能设计与实现 (30)4.13.1 运行功能实现概述 (30)4.13.2 运行功能技术分析 (30)4.13.3 运行功能实现过程 (31)4.14 获取系统时间功能设计与实现 (31)4.15 复制功能设计与实现 (31)4.16 剪切功能设计与实现 (32)4.17 粘贴功能设计与实现 (32)4.18 帮助功能设计与实现 (32)4.19 小结 (33)5测试目的 (34)5.1测试目的 (34)5.2 功能测试 (34)5.3界面测试 (34)5.4 小结 (36)6 结束语 (37)6.1 总结 (37)6.2 展望 (37)附录 (38)参考文献 (40)致谢 (41)XX学校本科毕业设计1 绪论本章是论文的序言部分,将论述论文研究的背景、意义、研究现状以及论文要完成的工作。
Java课设_文本编辑器
Java课设_文本编辑器预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制目录第一章绪论 (1)一、Java语言特点 (1)二、Java发展前景 (2)第二章问题分析 (5)一、文本编辑器的设计 (5)二、功能、性能 (5)三、开发环境 (6)四、设计示意图 (6)第三章系统详细设计 (7)一、文件打开与保存对话框的设计 (7)二、调用颜色对话框的设计 (9)三、建立Choice下拉列表实现对字体的设计 (10)四、剪切,复制,粘贴的设计 (10)第四章代码实现 (12)一、字形,字体大小部分 (12)二、帮助中关于主题部分 (14)第五章测试与调试 (16)一、调试分析 (16)二、测试结果 (16)第六章总结与心得 (19)第七章附录 (20)一、源代码 (20)二、参考文献 (31)第一章绪论一、Java语言特点1、面向对象Java语言是一个完全面向对象的语言,并且对软件工程技术有很强分得支持:Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型:对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏:类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
2、平台无关性严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字限,最后的目标码都是一致:的:Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行是系统,Java程序就可在任意的处理器上运行。
这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
3、安全问题Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性;毁灭系统资源;消耗系统资源;挖掘系统或个人机密;骚扰正常工作的进行。
4、多线程单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情;其他大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持);Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序;多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作;通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
JAVA程序设计题: 文本编辑器设计资料
JAVA程序设计题:文本编辑器设计【问题描述】实现类似Windows操作系统“记事本”的功能。
它是一个简单的文本文档编辑器,可以创建、查看或编辑文本文件。
【实验目的】要求学生能熟练使用基于Swing的GUI设计,熟练使用常用组件和容器,理解java事件处理机制,会查看API documentation完成设计任务,熟练文件流的操作。
【基本功能】设计一个文本编辑器,通过菜单组件可以创建、查看或编辑文本文件。
增加对文件的存贮、剪切和黏贴等功能功能的其他扩展package com.huangyilun.work;import java.awt.*;import java.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import javax.swing.*;public class Notice_B08010332 extends JFrame {public static void main(String[] args) {new Notice_B08010332();}public Notice_B08010332() {super("新建文本文件");setUpUIComponent();setUpEventListener();setVisible(true);this.showForm();}private void showForm(){//侦听窗口关闭操作setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose();System.exit(0);}});}private void setUpUIComponent() {setSize(640, 480);// 菜单栏JMenuBar menuBar = new JMenuBar();// 设置「文件」菜单JMenu fileMenu = new JMenu("文件");menuOpen = new JMenuItem("打开");// 快捷键设置menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));menuSave = new JMenuItem("保存");menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));menuSaveAs = new JMenuItem("另存为");menuClose = new JMenuItem("关闭");menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));fileMenu.add(menuOpen);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuSave);fileMenu.add(menuSaveAs);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuClose);// 设置「编辑」菜单JMenu editMenu = new JMenu("编辑");menuCut = new JMenuItem("剪切");menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));menuCopy = new JMenuItem("复制");menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));menuPaste = new JMenuItem("粘贴");menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));editMenu.add(menuCut);editMenu.add(menuCopy);editMenu.add(menuPaste);menuBar.add(fileMenu);menuBar.add(editMenu);setJMenuBar(menuBar);// 文字编辑区域textArea = new JTextArea();textArea.setFont(new Font("宋体", Font.PLAIN, 16));textArea.setLineWrap(true);JScrollPane panel = new JScrollPane(textArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);Container contentPane = getContentPane();contentPane.add(panel, BorderLayout.CENTER);// 状态栏stateBar = new JLabel("未修改");stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder());contentPane.add(stateBar, BorderLayout.SOUTH);popUpMenu = editMenu.getPopupMenu();}private void setUpEventListener() {// 按下窗口关闭钮事件处理addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {closeFile();}});// 菜单- 打开menuOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {openFile();}});// 菜单- 保存menuSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {saveFile();}});// 菜单- 另存为menuSaveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { saveFileAs();}});// 菜单- 关闭文件menuClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { closeFile();}});// 菜单- 剪切menuCut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cut();}});// 菜单- 复制menuCopy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {copy();}});// 菜单- 粘贴menuPaste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {paste();}});// 编辑区键盘事件textArea.addKeyListener(new KeyAdapter() {public void keyTyped(KeyEvent e) {processTextArea();}});// 编辑区鼠标事件textArea.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(editMenu, e.getX(), e.getY());}public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});}private void openFile() {if (isCurrentFileSaved()) { // 文件是否为保存状态open(); // 打开} else {// 显示对话框int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) {// 确认文件保存case JOptionPane.YES_OPTION:saveFile(); // 保存文件break;// 放弃文件保存case JOptionPane.NO_OPTION:open();break;}}}private boolean isCurrentFileSaved() {if (stateBar.getText().equals("未修改")) {return true;} else {return false;}}private void open() {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(this);File file = chooser.getSelectedFile();currFile = file;String str = "";try{FileInputStream fileinput = new FileInputStream(file.getAbsolutePath());int x = fileinput.available();byte b[] = new byte[x];fileinput.read(b);str = new String(b);}catch(Exception e){e.printStackTrace();}if (file != null)this.textArea.setText(str);}private void saveFile() {String str = this.textArea.getText();if(currFile != null && !currFile.equals("")){try{FileWriter out = new FileWriter(currFile);out.write(str);out.close();}catch(Exception e){e.printStackTrace();}}else{saveFileAs();}stateBar.setText("已保存");}private void saveFileAs() {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(this);File file = chooser.getSelectedFile();currFile = file;String str = this.textArea.getText();if(currFile != null && !currFile.equals("")){try{FileWriter out = new FileWriter(currFile);out.write(str);out.close();}catch(Exception e){e.printStackTrace();}}stateBar.setText("已保存");}private void closeFile() {// 是否已保存文件if (isCurrentFileSaved()) {// 释放窗口资源,而后关闭程序dispose();} else {int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) {case JOptionPane.YES_OPTION:saveFile();break;case JOptionPane.NO_OPTION:dispose();}}}private void cut() {textArea.cut();stateBar.setText("已修改");popUpMenu.setVisible(false); }private void copy() {textArea.copy();popUpMenu.setVisible(false); }private void paste() {textArea.paste();stateBar.setText("已修改");popUpMenu.setVisible(false); }private void processTextArea() { stateBar.setText("已修改");}private JMenuItem menuOpen; private JMenuItem menuSave; private JMenuItem menuSaveAs; private JMenuItem menuClose; private JMenu editMenu; private JMenuItem menuCut; private JMenuItem menuCopy;private JMenuItem menuPaste;private JTextArea textArea;private JLabel stateBar;private JPopupMenu popUpMenu;private File currFile;}。
Java程序设计实验报告文本编辑器的设计与实现
Java程序设计实验报告文本编辑器的设计与实现Java程序设计实验报告学生姓名:邵强学号:课程编号:06021801-0实验名称:文本编辑器的设计与实现实验内容:设计与实现一个文本编辑器,要求具有方便的图形用户界面,包括标题栏、菜单栏,菜单栏有相关的菜单和菜单项,有快捷键,具有编辑、打开、保存、复制、粘贴等功能(详细功能要求经过运行提供的字节码文件来确定,主类是JNotePadUI)。
完成有关类的设计,并调试运行,给出有代表性的程序输出结果(程序运行截图)。
程序代码如下:package note;import java.awt.*;import java.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.*;import javax.swing.*;public class Mynote extends JFrame implements ActionListener{ JMenu menuFile; JMenu menuEdit ; JMenu menuAbout; JPopupMenu popUpMenu;JTextArea txt=null; //编辑区JLabel lab=new JLabel("未修改");JFileChooser fileChooser = new JFileChooser();File saveFileName = null, fileName = null;public Mynote(String s){super(s);createMenuBar(); //菜单栏createContentPane(); //文本编辑区组件setBounds(100,100,600,450);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ closeFile(); } });setVisible(true); }public void createMenuBar() {JMenuBar menuBar = new JMenuBar();menuFile = new JMenu("文件");menuEdit = new JMenu("编辑");menuAbout= new JMenu("关于");menuBar.add(menuFile);menuBar.add(menuEdit);menuBar.add(menuAbout);JMenuItem itemOpen = new JMenuItem("打开"); menuFile.add(itemOpen);itemOpen.addActionListener(this);menuFile.addSeparator();JMenuItem itemSave = new JMenuItem("保存");menuFile.add(itemSave);itemSave.addActionListener(this);JMenuItem itemSaveas=new JMenuItem("另存为"); menuFile.add(itemSaveas);itemSaveas.addActionListener(this);menuFile.addSeparator();JMenuItem itemQuit = new JMenuItem("关闭");menuFile.add(itemQuit);itemQuit.addActionListener(this);JMenuItem itemCut = new JMenuItem("剪切");menuEdit.add(itemCut);itemCut.addActionListener(this);JMenuItem itemCopy = new JMenuItem("复制");menuEdit.add(itemCopy);itemCopy.addActionListener(this);JMenuItem itemPaste= new JMenuItem("粘贴");menuEdit.add(itemPaste);itemPaste.addActionListener(this);JMenuItem itemAboutnote = new JMenuItem("关于NotePad");menuAbout.add(itemAboutnote);itemAboutnote.addActionListener(this);//右键菜单JMenuItem Copyitem=new JMenuItem("复制");Copyitem.addActionListener(this);JMenuItem Cutitem=new JMenuItem("剪切");Cutitem.addActionListener(this);JMenuItem Pasteitem=new JMenuItem("粘贴");Pasteitem.addActionListener(this);popUpMenu=new JPopupMenu();popUpMenu.add(Copyitem);popUpMenu.add(Cutitem);popUpMenu.add(Pasteitem);//快捷键itemOpen.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MAS K,false));itemSave.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK ,false));itemSaveas.setAccelerator(KeyStroke.getKeyStroke('A',Event.CTRL_MA SK,false));itemQuit.setAccelerator(KeyStroke.getKeyStroke('Q',Event.CTRL_MAS K,false));itemCut.setAccelerator(KeyStroke.getKeyStroke('X',Event.CTRL_MASK, false));itemCopy.setAccelerator(KeyStroke.getKeyStroke('C',Event.CTRL_MAS K,false));itemPaste.setAccelerator(KeyStroke.getKeyStroke('V',Event.CTRL_MAS K,false));setJMenuBar(menuBar);}private boolean isChanged(){if(lab.getText().equals("未修改"))return false;else return true;}public void actionPerformed(ActionEvent e){int option=-1;if(e.getActionCommand().equals("打开")) option=0;if(e.getActionCommand().equals("保存")) option=1;if(e.getActionCommand().equals("另存为")) option=2;if(e.getActionCommand().equals("关闭")) option=3;if(e.getActionCommand().equals("剪切")) option=4;if(e.getActionCommand().equals("复制")) option=5;if(e.getActionCommand().equals("粘贴"))option=6;if(e.getActionCommand().equals("关于NotePad")) option=7;switch(option){case 0:{if(!isChanged()){ open(); }else{ int option2=JOptionPane.showConfirmDialog(this,"文件已修改,是否保存?","保存文件?",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);switch(option2){case JOptionPane.YES_OPTION:saveFile();//保存文件break;case JOptionPane.NO_OPTION:open();break;}}break;}case 1:saveFile();break;case 2:saveFileAs();break;case 3:closeFile();break;case 4:Cut();break;case 5:Copy();break;case 6:Paste();break;case 7:about();break;default:break;}}public void createContentPane() //文本编辑区组件{JScrollPane scrollPane; //滑动条txt = new JTextArea(10,30);txt.setEditable(true);txt.setFont(new Font("宋体",Font.PLAIN,18));txt.setLineWrap(true);scrollPane = new JScrollPane(txt);add(scrollPane, BorderLayout.CENTER);add(lab,BorderLayout.SOUTH);txt.addKeyListener(new KeyAdapter(){public void keyTyped(KeyEvent e){ lab.setText("已修改"); }});txt.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(),e.getX(),e.getY());}public void mouseClicked(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});}private void open(){int option=fileChooser.showOpenDialog(this);if(option==JFileChooser.APPROVE_OPTION){ try{ //打开所选文件BufferedReader buf=new BufferedReader(new FileReader(fileChooser.getSelectedFile()));//设置文件标题setTitle(fileChooser.getSelectedFile().toString());//删除前一次文件txt.setText("");//设置状态栏lab.setText("未修改");//取得系统相依的换行符StringlineSeparator=System.getProperty("line.separator");//读取文件并附加至文字编辑区String text;while((text=buf.readLine())!=null){txt.append(text);txt.append(lineSeparator);}buf.close();}catch(IOException e){JOptionPane.showMessageDialog(this,e.toString(),"打开文件失败",JOptionPane.ERROR_MESSAGE);} }}private void saveFile(){//从标题栏取得文件名称File file=new File(getTitle());//若指定文件不存在if(!(file.exists())){ saveFileAs(); }else{ try{ //打开指定文件BufferedWriter buf=new BufferedWriter(new FileWriter(file));//将文字编辑区的文字写入文件buf.write(txt.getText());buf.close();//设置状态栏为未修改lab.setText("未修改");}catch(IOException e){JOptionPane.showMessageDialog(this, e.toString(),"写入文件失败",JOptionPane.ERROR_MESSAGE); }}}private void saveFileAs(){ //显示对话框int option3=fileChooser.showSaveDialog(this);//如果确认选择文件if(option3==JFileChooser.APPROVE_OPTION){ //取得选择的文件File file=fileChooser.getSelectedFile();//在标题栏上设置文件名称setTitle(file.toString());try{ //建立文件file.createNewFile();//进行文件保护saveFile();}catch(IOException e){ JOptionPane.showMessageDialog(this,e.toString(),"无法建立文件",JOptionPane.ERROR_MESSAGE);}}}private void closeFile(){//是否已保存文件if(!isChanged()) dispose();else{int option= JOptionPane.showConfirmDialog(this,"文件已修改,是否保存?","保存文件?",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);switch(option){case JOptionPane.YES_NO_OPTION:saveFile();case JOptionPane.NO_OPTION:dispose();}}}private void Cut(){txt.cut();lab.setText("已修改");popUpMenu.setVisible(false);}private void Copy()txt.copy();popUpMenu.setVisible(false);}private void Paste(){txt.paste();lab.setText("已修改");popUpMenu.setVisible(false);}private void about(){//显示对话框JOptionPane.showOptionDialog(this,"程序名称\n"+" JNotePad\n"+"简介:\n"+" 一个简单的文字编辑器\n","关于JNotePad",JOptionPane.DEFAULT_OPTION,RMATION_MESSAGE,null,null,null);}public static void main(String args[]) {new Mynote("陆庆庆");}程序有代表性的输出结果及结果分析:这是其中的几个画面截图。
教你用JAVA写文本编辑器(一)
教你⽤JAVA写⽂本编辑器(⼀)⽬录前⾔思路分析:具体实现总结前⾔这⾥⽤swing ,awt写的。
我们⼤概要做成⼀个电脑的记事本那样的⼀个编辑器。
可以调整字体,字号,颜⾊。
能够打开、保存⽂件,新建窗⼝,点击退出,还有⼀个关于介绍的窗⼝。
整体看起来功能不是很多,只要⼀部分⼀部分的去完成就很好办了。
思路分析:⼀、⾸先我们的⽬标模型就是电脑的记事本,打开编辑器可以看到结构:1、标题显⽰在窗⼝的title。
2、下⾯⼀⾏是⼀个⼯具栏,⾥⾯有⽂件、编辑、格式、查看、帮助。
这⾥我们就选⽂件、格式、帮助来做,⼤致的情况都差不多。
3、再下⾯就是⼀个屏占⽐超⾼的 TextArea了,他还有个特点是有滚动条。
⼆、⽂件菜单栏:这⾥有新建窗⼝,打开⽂件,保存⽂件,还有⼀个退出按钮。
其中的难点主要在打开和保存⽂件上,为什么呢。
因为我们点开打开和保存两个按钮,都会跳出⼀个⽂件选择的Dialog。
这东西是不是要⾃⼰画,如果要⾃⼰画,那就相当⿇烦了,要对磁盘进⾏遍历,然后贴到窗⼝中什么的。
所幸我们有封装好的⼯具JFileChooser。
三、格式菜单:弹出⼀个窗⼝,有⽂字的各种形式的属性选择,中间⼀个展⽰⽤的⽂本区域,下⾯两个按钮,确定即保存格式,修改主窗⼝的属性。
取消则关闭窗⼝,不改变属性。
四、帮助菜单:这个是最简单的,因为只有⼀个弹窗,⽤于显⽰⽂本,所以我们打算从这⾥开始做。
OK,对每个部分分析了⼀下感觉清晰了很多。
接下来我们来第⼀步,把主窗⼝画出来。
具体实现画主窗⼝,并把菜单栏按照各⾃的关系建好:这⾥⽤到JMenuBar,JMenu、JMenuItem。
顾名思义⼀个是菜单栏,⼀个是菜单,⼀个事菜单项。
下⾯看代码:public class test5 extends JFrame{private JMenuBar menuBar;//菜单栏private JMenu menu_File,menu_Edit,menu_Help,menu_Format;//菜单栏内的菜单private JMenuItem item_new,item_open,item_save,item_exit;//对于file菜单的⼦项private JMenuItem item_undo,item_cut,item_copy,item_stick,item_delete;//对于edit菜单的⼦项private JMenuItem item_about;//对于help菜单的⼦项private JMenuItem item_word_format;public test5() {initMenuBar();this.setJMenuBar(menuBar);this.setSize(800,600);this.setTitle("⾃定义⽂本编辑器");this.setVisible(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 对menubar进⾏初始化,这⾥有⼀些⼩的快捷⽅式的设置* ⼤家可以考虑对所有的组件都设置⼀下* 两种形式:* menu_File.setMnemonic('f'); 对menu* item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false)); 对item*/public void initMenuBar() {menuBar = new JMenuBar();menu_File = new JMenu("⽂件(F)");menu_File.setMnemonic('f');//f+alt打开item_new = new JMenuItem("新建");item_open = new JMenuItem("打开");item_save = new JMenuItem("保存");item_exit = new JMenuItem("退出");menu_File.add(item_new);menu_File.add(item_open);menu_File.add(item_save);menu_File.add(item_exit);//File 菜单menu_Edit = new JMenu("编辑(E)");menu_Edit.setMnemonic('e');item_undo = new JMenuItem("撤销");item_cut = new JMenuItem("剪切");item_copy = new JMenuItem("复制");item_stick = new JMenuItem("粘贴");item_delete = new JMenuItem("删除");menu_Edit.add(item_undo);menu_Edit.add(item_cut);menu_Edit.add(item_copy);menu_Edit.add(item_stick);menu_Edit.add(item_delete);//Edit 菜单menu_Help = new JMenu("帮助(H)");menu_Help.setMnemonic('h');item_about = new JMenuItem("关于");menu_Help.add(item_about);//Help 菜单menu_Format = new JMenu("格式(O)");menu_Format.setMnemonic('o');item_word_format = new JMenuItem("字体(F)");item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false));//给item添加快捷键menu_Format.add(item_word_format);menuBar.add(menu_File);menuBar.add(menu_Edit);menuBar.add(menu_Format);menuBar.add(menu_Help);}public static void main(String[] args) {test5 t5 = new test5();}}接下来就是菜单栏下⾯的⽂本编辑区域了,这⾥只需要⽤⼀个JTextArea就可以了,别忘了还有滚动条(JScrollPane):public class test5 extends JFrame{......private static JTextArea edit_text_area;//private JTextArea edit_text_area;//编辑区域private JScrollPane scroll_bar;//可滚动的pane ⾥⾯添加edit_text_area就可以变为⼀个可以滚动的⽂本框,JScrollPane是⼀个pane,同时可以设置⽅向public test5() {initMenuBar();initEditArea();this.setJMenuBar(menuBar);this.setSize(800,600);this.add(scroll_bar);this.setTitle("⾃定义⽂本编辑器");this.setVisible(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 初始化编辑区域* ⽤scrollpane装textarea* 同时对pane设置⽅向*/public void initEditArea() {edit_text_area = new JTextArea();scroll_bar = new JScrollPane(edit_text_area);scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);}public void initMenuBar() {...}public static void main(String[] args) {test5 t5 = new test5();}}为了节省篇幅,我就把重复出现的代码删除⽤...代替了,相信没有影响⼤家的观看效果。
Java写的简单文本编辑器代码(word文档良心出品)
import java.awt.*;import java.awt.event.*;import java.io.*;public class Notepad /*implements ActionListener , MouseListener , MouseMotionListener , WindowListener , ItemListener , KeyListener, TextListener */{//成员变量private Frame mainFrame;//主框架private MenuBar mb ; //菜单条private Menu mFile , mEdit , mFormat , mHelp ; //菜单:文件,编辑,格式,帮助private MenuItem miNew , miOpen , miSave , miSaveAs , miExit ;//文件菜单项:新建,打开,保存,另存为,退出private MenuItem miCut , miCopy , miPaste , miDelete ;//编辑菜单项:剪切,复制,粘贴,删除private MenuItem miFont, miLowtoCapital, miCapitaltoLow,miEncrypt, miDisencrypt;//格式菜单项:字体private MenuItem miAboutNotepad;//帮助菜单项:关于记事本private TextArea ta;//文本区private String tempString;//临时字符串,用于存储需要复制粘贴的字符串private boolean textValueChanged = false;private int id_font ;//字体String fileName = "";//上次保存后的文件名和地址//构造函数public Notepad(){//框架mainFrame = new Frame ("Notepad v0.99 by Launching");mb = new MenuBar ();ta = new TextArea (30 ,60);ta.setFont( new Font ( "Times New Rome" , Font.PLAIN , 15));ta.setBackground(new Color(0 , 250 , 200));//菜单条mFile = new Menu ( "文件");mEdit = new Menu ( "编辑");mFormat = new Menu ("格式t");mHelp = new Menu ("帮助");//"文件"miNew = new MenuItem ("新建");miOpen = new MenuItem ("打开");miSave = new MenuItem ("保存");miSaveAs = new MenuItem ("另存为");miExit = new MenuItem ("退出");//"编辑"miCut = new MenuItem ("剪切");miCopy = new MenuItem ("复制");miPaste = new MenuItem ("粘贴");miDelete = new MenuItem ("删除");//"格式"miFont = new MenuItem ("Font");miLowtoCapital = new MenuItem("Low to Capital"); miCapitaltoLow = new MenuItem("Capital to Low"); miEncrypt = new MenuItem("Encrypt");miDisencrypt = new MenuItem("Disencrypt");//"帮助"miAboutNotepad = new MenuItem ("关于 Notepad");//添加文件菜单项mFile.add(miNew);mFile.add(miOpen);mFile.add(miSave);mFile.add(miSaveAs);mFile.add(miExit);//添加编辑菜单项mEdit.add(miCut);mEdit.add(miCopy);mEdit.add(miPaste);mEdit.add(miDelete);//添加格式菜单项mFormat.add(miFont);mFormat.add(miLowtoCapital);mFormat.add(miCapitaltoLow);mFormat.add(miEncrypt);mFormat.add(miDisencrypt);//添加帮助菜单项mHelp.add(miAboutNotepad);//菜单条添加菜单mb.add(mFile);mb.add(mEdit);mb.add(mFormat);mb.add(mHelp);//框架添加菜单条mainFrame.setMenuBar( mb );//初始字符串赋为空tempString = "";//添加文本区mainFrame.add(ta, BorderLayout.CENTER);mainFrame.setSize(800 , 500);mainFrame.setLocation( 100 ,100);// 起始位置mainFrame.setResizable(true);//不可更改大小mainFrame.setVisible(true);//mainFrame.pack();/////////////////////////增加监视器////////////////////////主框架mainFrame.addWindowListener(new WindowAdapter (){ //关闭窗口public void windowClosing(WindowEvent e) {System.exit(0);}});//文本区ta.addKeyListener( new KeyAdapter(){public void KeyTyped(KeyEvent e){textValueChanged = true ; //键盘按键按下即导致文本修改}});////////////////"文件"菜单:////////////////////////新建miNew.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){ta.replaceRange("", 0 , ta.getText().length()) ;//清空文本区的内容fileName = "";//文件名清空}});//打开miOpen.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e) {FileDialog d=new FileDialog(mainFrame , "open file" ,FileDialog.LOAD );//打开文件对话框d.addWindowListener( new WindowAdapter(){ //关闭文件对话框窗口public void windowClosing(WindowEvent ee){System.exit(0);}});d.setVisible(true);File f = new File( d.getDirectory()+d.getFile() ); //建立新文件fileName = d.getDirectory()+d.getFile();//得到文件名char ch[] = new char [(int)f.length()];///用此文件的长度建立一个字符数组try//异常处理{//读出数据,并存入字符数组ch中BufferedReader bw = new BufferedReader( new FileReader(f) ); bw.read(ch);bw.close();}catch( FileNotFoundException fe ){System.out.println("file not found");System.exit(0);}catch( IOException ie){System.out.println("IO error");System.exit(0);}String s =new String (ch);ta.setText(s);//设置文本区为所打开文件的内容}});//保存miSave.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e) {if( fileName.equals("") ){ //如果文件没有被保存过,即文件名为空FileDialog d=new FileDialog(mainFrame , "save file" , FileDialog.SAVE );//保存文件对话框d.addWindowListener( new WindowAdapter(){ //关闭文件对话框窗口public void windowClosing(WindowEvent ee){System.exit(0);}});d.setVisible(true);String s = ta.getText();//得到所输入的文本内容try//异常处理{File f = new File( d.getDirectory()+d.getFile());//新建文件fileName = d.getDirectory()+d.getFile();//得到文件名BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}else//如果文件已经保存过{String s = ta.getText();//得到所输入的文本内容try//异常处理{File f = new File( fileName );//新建文件BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}}});//另存为miSaveAs.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e) {FileDialog d=new FileDialog(mainFrame , "save file" , FileDialog.SAVE );//保存文件对话框d.addWindowListener( new WindowAdapter(){ //关闭文件对话框窗口public void windowClosing(WindowEvent ee){System.exit(0);}});d.setVisible(true);String s = ta.getText();//得到所输入的文本内容try//异常处理{File f = new File( d.getDirectory()+d.getFile());//新建文件BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}});//退出miExit.addActionListener( new ActionListener(){ ///退出程序public void actionPerformed(ActionEvent e){System.exit(0);}});////////////////"编辑"菜单://////////////////////剪切miCut.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){tempString = ta.getSelectedText(); ///得到要复制的内容,暂存在tempString中StringBuffer tmp = new StringBuffer ( ta.getText());//临时存储文本int start = ta.getSelectionStart(); //得到要删除的字符串的起始位置int len = ta.getSelectedText().length(); //得到要删除的字符串的长度tmp.delete( start , start+len); ///删除所选中的字符串ta.setText(tmp.toString());//用新文本设置原文本}});//复制miCopy.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){tempString = ta.getSelectedText(); ///得到要复制的内容,暂存在tempString中}});//粘贴miPaste.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){StringBuffer tmp = new StringBuffer ( ta.getText());//临时存储文本int start = ta.getSelectionStart(); //得到要粘贴的位置tmp.insert(start , tempString);//查入要粘贴的内容ta.setText(tmp.toString());//用新文本设置原文本}});//删除miDelete.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){StringBuffer tmp = new StringBuffer ( ta.getText());//临时存储文本int start = ta.getSelectionStart(); //得到要删除的字符串的起始位置int len = ta.getSelectedText().length(); //得到要删除的字符串的长度tmp.delete( start , start+len); ///删除所选中的字符串ta.setText(tmp.toString());//用新文本设置原文本}});////////////////"格式"菜单://////////////////////字体miFont.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){final Dialog d = new Dialog ( mainFrame , "Font");//新建对话框 d.setLocation( 250 ,250);// 起始位置d.setLayout( new BorderLayout());//表格布局//////////////////////////上部分面板Label l_font = new Label ("font");//font标签Panel p_1 = new Panel();p_1.add(l_font);p_1.setVisible(true);//////////////////////////中部分面板List font_list = new List (6 , false);//字体列表//添加字体项目font_list.add("Plain");///普通字体font_list.add("Bold"); ///粗体font_list.add("Italic");//斜体font_list.addItemListener( new MyItemListener_font() ); //字体增加监视器Panel p_2 = new Panel();p_2.add(font_list);p_2.setVisible(true);//////////////////////////下部分面板Button ok = new Button ("OK");ok.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){d.dispose();}});ok.setSize( new Dimension (20 , 5) );Panel p_3 = new Panel();//下部分面板p_3.add(ok);p_3.setVisible(true);//添加三个面板d.add(p_1 , BorderLayout.NORTH);d.add(p_2 , BorderLayout.CENTER);d.add(p_3 , BorderLayout.SOUTH);d.pack();d.addWindowListener( new WindowAdapter(){ //关闭对话框窗口public void windowClosing(WindowEvent ee){d.dispose();}});d.setVisible(true);}});//小写字母转大写miLowtoCapital.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if((int)s.charAt(i)>=97 && (int)s.charAt(i)<=122 ){temp.append((char)((int)s.charAt(i)-32));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});//大写字母转小写miCapitaltoLow.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if((int)s.charAt(i)>=65 && (int)s.charAt(i)<=90 ){temp.append((char)((int)s.charAt(i)+32));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});//加密miEncrypt.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if(s.charAt(i)>=40 && s.charAt(i)<=125){if(i%2==0){temp.append((char)(s.charAt(i) + 1 ));}elsetemp.append((char)(s.charAt(i) - 1 ));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});//解密miDisencrypt.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if(s.charAt(i)>=40 && s.charAt(i)<=125){if(i%2==0){temp.append((char)(s.charAt(i) - 1 ));}elsetemp.append((char)(s.charAt(i) + 1 ));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});////////////////"帮助"菜单://////////////////////关于记事本miAboutNotepad.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){final Dialog d = new Dialog ( mainFrame , "AboutNotepad");//新建对话框TextArea t = new TextArea("\nwelcome to use Notepad " + "\n\n" + "Copyright@Launching " + "\n\n" + "free software" + "\n\n" + "v0.99");//添加标签t.setSize( new Dimension ( 5 , 5));t.setEditable(false);d.setResizable(false);//不可调整大小d.add(t);d.pack();d.addWindowListener( new WindowAdapter(){ //关闭对话框窗口public void windowClosing(WindowEvent ee){d.dispose();}});d.setLocation( 100 ,250);// 起始位置d.setVisible(true);}});}class MyItemListener_font implements ItemListener { //字体监听器public void itemStateChanged(ItemEvent e) {id_font = ((java.awt.List)e.getSource()).getSelectedIndex();switch( id_font){case 0:{ta.setFont(new Font("Times New Roman",Font.PLAIN ,ta.getFont().getSize()) );//普通文字break;}case 1:{ta.setFont(new Font("Times New Roman" ,Font.BOLD ,ta.getFont().getSize()) );//粗体文字break;}case 2:{ta.setFont(new Font("Times New Roman" ,Font.ITALIC ,ta.getFont().getSize()) );//斜体文字break;}}}}//////////////////////主函数//////////////////////////////public static void main(String arg[]){Notepad test = new Notepad(); ///创建记事本}//////////////////////////////////////////////////////////////// }运行效果图:。
java课设—文本编辑器的设计与实现
淮海工学院计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:文本编辑器的设计与实现姓名:学号:专业班级:系(院):计算机工程学院设计时间:2015.6.21~2014.7.4设计地点:计算机楼机房、教室、宿舍zhuti zt=new zhuti();}class zhuti extends Frame implements ActionListener {Button btn;Label lab;zhuti(){setLayout(null);btn=new Button("确定");lab=new Label("这是一个简单的文本编辑器!");add(btn);add(lab);btn.addActionListener(this);setBounds(200,200,250,150);setVisible(true);lab.setBounds(20 ,60,220,30);lab.setFont(new Font("楷体",Font.BOLD,16));lab.setBackground(Color.cyan);btn.setBounds(100,100,50,30);btn.setBackground(Color.cyan);}public void actionPerformed(ActionEvent e){if(e.getSource()==btn){dispose();}}}4.2运行结果显示如图1:文本编辑器主界面如图2:文本编辑器文件菜单如图3:文本编辑器编辑菜单如图4:文本编辑器格式菜单如图6:文本编辑器字体格式和背景5. 课程设计心得通过这次的课程设计,我受益了很多,因为这次设计是使用界面设计的程序,原本对这些学的不精的我,通过这次的课程设计让我学会了使用图形用户界面。
对基本的图形用户界面的设计已经掌握。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1 绪论 (1)1.1课题研究的背景及意义 (1)1.2 文本编辑器软件的应用现状 (1)1.3 本文工作和结构安排 (2)1.3.1 本文主要工作 (2)1.3.2 本文结构安排 (3)1.4 小结 (3)2 相关技术介绍 (4)2.1 Java技术 (4)2.1.1 Java特点 (4)2.1.2 程序开发常用包 (5)2.2 小结 (6)3 系统分析与设计 (7)3.1 软件需求分析 (7)3.2 系统类设计 (8)3.3 系统总体设计 (13)3.3.1 设计原理 (15)3.3.2 功能模块划分 (15)3.4 小结 (17)4 详细设计与实现 (18)4.1 系统开发平台及工具选择 (18)4.2 主窗体设计与实现 (18)4.3 新建功能设计与实现 (20)4.3.1 新建功能概述 (20)4.3.2 新建功能技术分析 (20)4.3.3 新建功能实现过程 (21)4.4 打开功能设计与实现 (21)4.4.1 打开功能概述 (21)4.4.2 打开功能技术分析 (21)4.4.3 打开功能实现过程 (22)4.5保存功能设计与实现 (22)4.5.1 保存功能概述 (22)4.5.2 保存功能技术分析 (22)4.5.3 保存功能实现过程 (23)4.6 全选功能设计与实现 (23)4.6.1 全选功能概述 (23)4.6.2 全选功能技术分析 (23)4.6.3 全选功能实现过程 (23)4.7 退出功能设计与实现 (24)4.7.1 退出功能概述 (24)4.7.2 退出功能技术分析 (24)4.7.3 退出功能实现过程 (24)4.8 查找功能设计与实现 (25)4.8.1 查找功能概述 (25)4.8.2 查找功能技术分析 (25)4.8.3 查找功能实现过程 (25)4.9 查找下一个功能设计与实现 (26)4.9.1 查找下一个功能概述 (26)4.9.2 查找下一个功能技术分析 (26)4.9.3 查找下一个功能实现过程 (26)4.10 替换功能设计与实现 (27)4.10.1 替换功能概述 (27)4.10.2 替换功能技术分析 (27)4.10.3 替换功能实现过程 (28)4.11 设置字体功能设计与实现 (28)4.11.1 设置字体功能概述 (28)4.11.2 设置字体功能技术分析 (28)4.11.3 设置字体功能实现过程 (28)4.12 编译功能设计与实现 (29)4.12.1 编译功能概述 (29)4.12.2 编译功能技术设计 (29)4.12.3 编译功能实现过程 (30)4.13 运行功能设计与实现 (30)4.13.1 运行功能实现概述 (30)4.13.2 运行功能技术分析 (30)4.13.3 运行功能实现过程 (31)4.14 获取系统时间功能设计与实现 (31)4.15 复制功能设计与实现 (31)4.16 剪切功能设计与实现 (32)4.17 粘贴功能设计与实现 (32)4.18 帮助功能设计与实现 (32)4.19 小结 (33)5测试目的 (34)5.1测试目的 (34)5.2 功能测试 (34)5.3界面测试 (34)5.4 小结 (36)6 结束语 (37)6.1 总结 (37)6.2 展望 (37)附录 (38)参考文献 (40)致谢 (41)平顶山学院本科毕业设计1 绪论本章是论文的序言部分,将论述论文研究的背景、意义、研究现状以及论文要完成的工作。
文本编辑器的应用是编写文本的重要编辑软件,良好的界面以及使用方便是重要前提,通过对现有的应用现状的分析,提出了本课题的研究方向。
最后将给出本文的主要组织结构,从整体上阐述论文的工作。
1.1 课题研究的背景及意义随着计算机技术的不断发展,文本编辑器已成为大家必不可少的工具,但是不同的用户对文本编辑器有不同的功能需求,除了像Office中的word还有WPS等大众文本编辑器,还需要一些操作简单,帮助电脑初学者的文本编辑器。
市场上出现的和用户所使用的文本编辑器种类繁多,功能也是各式各样,其中有相当一部分是很优秀的[1]。
例如,word软件提供了可以编辑文字图形、图像、声音、动画,还可以插入其他软件的制作信息;提供了强大的制表功能;提供了大量的模板;提供了web工具的支持等,WPS也提供了强大的文本编辑功能。
但是电脑初学者学习word和WPS 是非常困难的,很多功能都不知道如何使用,如在文本中的页码问题、页眉问题、格式问题等。
因此开发一个操作简单,易于学习的文本编辑软件对电脑初学者显得较为重要。
1.2 文本编辑器软件的应用现状信息化时代的步伐加快了我们的生活脚步,也提高了我们的生活质量和工作效率。
文本编辑器软件作为大家编辑文本的重要工具,基本上代替了手写,利用文本编辑软件可以高效的进行文本的编辑。
这种工作方式已经成为当下重要工作的模式之一。
文本编辑软件能够帮助人们适应现在的高速度的生活,能够对用户编辑的文本进行打开、修改、替换、查找、粘贴、复制、剪切和保存等功能,能够更加快速的完成工作,帮助用户提高工作效率。
现在有太多的文本编辑软件,而且文本编辑软件有的功能繁多,学习它们的功能需要发费很长的时间,并且很多功能是不容易学习的。
对于文本编辑的电脑初学者来说不知道如何使用这些功能强大的文本编辑软件,并且学起来不是很容易,而他们只需要会使用文本编辑软件的基础功能[2]。
因此设计一个操作简单,易于学习,界面优美的文本编辑器是现在文本编辑软件应该解决的问题。
基于Java的文本编辑软件的设计与实现1.3 本文工作和结构安排针对文本编辑器软件的开发过程,本文在软件工程理论的指导下,以一个实际文本编辑器开发为背景,提出一种基于Java技术的文本编辑器的设计与实现方案,并进行文本编辑器软件的设计开发实践。
该小节概述本文主要工作和结构安排。
1.3.1 本文主要工作本文主要研究并完成基于Java语言的文本编辑软件的设计与实现。
本文针对现有软件存在的一些问题,在软件工程理论指导下,进行文本编辑器软件的分析、设计与实现,并详细讨论了软件实现过程当中的相关技术。
具体工作内容如下:1.文本编辑软件的需求分析本文在软件工程理论的指导下,通过实地调研去了解文本编辑人员对文本编辑软件的各种功能需求,总结现有编辑人员的工作流程,分析现有文本编辑器的问题,最后确定本文要完成的文本编辑器软件。
2.文本编辑器软件的类设计本文针对项目的需求,通过深入比较己有的基础架构,分析研究Java所能采用具体技术的优缺点与适用情况,对整个软件所需要的类进行了设计,对各个模块的功能进行了定义和划分。
软件采用Java技术,以Windows自带的记事本为开发平台。
3.文本编辑软件的设计文本编辑软件的设计遵循低耦合,高聚合的模块划分原则,把具有复杂功能的软件通过设计分解为具有基本独立,功能简单,易于实现等特点的文件、操作、格式、演示,格式、帮助等多个功能模块,并详细阐述了每个模块的功能设计。
4.文本编辑软件的实现该部分的工作主要包含以下4个方面:(1) 功能的实现,文本编辑软件要实现用户的基本需求,要实现文本编辑器的主要功能,包括新建功能、打开功能、保存功能、全选功能、复制功能、剪切功能、粘贴功能、查找功能、替换功能和帮助功能。
(2) 详细阐述文本编辑软件实现过程中的相关技术问题,这些相关技术问题包括Java语言的掌握以及使用、各个功能模块的实现、主界面的设计。
(3) 文本编辑软件的开发平台及工具的选择,选用windows自带的记事本进行业务实现,Java虚拟机作为后台支持。
软件使用Java语言编写代码,采用Java的GUI(图形用户界面)窗体进行的主窗体的开发。
(4) 文本编辑软件的测试,编制详细完善的测试用例并进行测试,以保证系统的质量。
平顶山学院本科毕业设计通过上述研究拟达到如下预期目标:通过文本编辑软件的开发和设计,满足文本编辑人员需要,为文本编辑用户提供一个良好的编辑界面,提高用户的工作效率。
1.3.2 本文结构安排本软件是通过对现有文本编辑器本身的特点,主要作用等各方面进行全面综合的了解,分析,归纳和总结,结合文本编辑器的主要功能,开发的应用软件。
本文详细介绍了软件的开发过程和各个模块的功能。
运用面向对象的方法进行软件分析和软件设计。
本文主要分六个部分的内容:1 绪论:本章主要介绍了课题研究的背景及意义、文本编辑软件的应用现状和论文的工作和结构安排。
2 相关技术介绍:本章主要介绍了Java技术,从Java特点和Java程序的开发常用包来说明。
3 系统分析与设计:本章主要讲的是系统的功能需求分析、系统类设计和系统的总体设计。
4 详细设计与实现:本章主要讲的是系统开发平台及工具的选择和主窗体的设计和软件的主要功能的设计以及软件的详细实现。
5 测试:本章主要讲的是系统的功能测试和界面测试,达到预期的功能效果。
6 结束语:本章主要讲的是总结、展望。
总结本文的主要工作和对未来工作的展望。
1.4小结本章首先介绍了本软件研究的背景及意义,研究现状,帮助了解该课题需要完成的功能,最后介绍了论文主要工作和结构安排,以便于可以在保证论文质量的前提下按照计划顺利地完成本论文的撰写。
基于Java的文本编辑软件的设计与实现2 相关技术介绍软件开发的实践过程离不开理论的指导和工具的应用。
本章将主要介绍文本编辑软件设计和实践过程中使用到的Java软件技术理论知识。
通过对开发技术知识的深入研究,为该系统的设计与实现做好充分的知识准备。
2.1 Java技术2.1.1 Java特点Java是一个简单的、面向对象的、分布的、健壮的、安全的、与平台无关的、可移植的、高性能的、多线程的,以及动态的解释型语言[3]。
由于Java最初是为控制电子产品设计的,因此它简单明了。
为了保证这种简单性,Java去掉了C++中许多复杂的、冗余的、有二义性的概念,例如操作符重载、多继承、数据类型自动转换等。
为了将程序员从复杂的内存管理的负担中解脱出来,同时也是为了减少错误,Java使用了自动内存垃圾收集机制,程序员只要在需要的时候申请即可,不需要释放,而由Java自己来收集、释放内存中的无用的块[4]。
1.Java是一种支持分布式操作的程序设计语言。
使用Java提供的URL类,用户可以象访问本地文件一样访问网络上的对象,使用非常方便。
在客户机/服务器的模式下,Java还可以将运算从服务器端分散到客户端,提高系统的效率,避免了服务器的瓶颈制约。
Java的网络类库支持分布式的编程。
Socket类提供可靠的流式网络的连接,支持TCP/IP协议。
通过编写协议句柄,程序员还可以扩充Java支持的协议集合。
2.Java提供非常有效的安全控制。