制作一个文本编辑器java课程设计报告
《Java语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间: 2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路 (2)二、设计过程 (3)三、测试结果 (12)四、心得体会 (13)五、程序代码 (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。
现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。
在编辑菜单下的子菜单复制,可以进行对文本的复制。
在文本区要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。
而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。
而且用户也可以根据自己的需要改变窗体的大小。
2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。
3、上两步都完成以后,就进入程序的检测运行阶段即所谓的编译运行,看是否符合设计要求,是否达到理想中的那种效果,在测验阶段,要一步一步完善自己的作品直至真正意义上的完成整个设计过程。
(二)流程图二、设计过程1、功能介绍:通过记事本编辑器可以实现新建、打开、保存文本文件、以及退出;同时也有对字体的改变、对字的颜色的改变以及复制、粘贴等功能,根据自己的意愿改变窗体,实行对其的最小化、最大化、关闭等等。
2、设计步骤:import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.print.*;import java.awt.datatransfer.*;import java.applet.*;import javax.swing.JColorChooser;import javax.swing.event.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import javax.swing.text.*;import javax.swing.colorchooser.*;引用两个包:javax、java、以及对应的方法(1)首先创建一个公共的类名为Bjq为文本编辑器创建一个窗体并设计标题为:08通信(2)班骆玉春设计的文本编辑器Bjq;并创建编辑器的文本域,具体代码如下;//设计标题JFrame f = new JFrame();f.setTitle("08通信(2)班骆玉春设计的文本编辑器Bjq");//构造文本域JTextArea aa = new JTextArea("", 20, 50);//构造一个文本域(2)创建一个空的菜单条并添加两个菜单项(文件、编辑)JMenuBar cc = new JMenuBar();//创建一个空的菜单条//创建"文件"和"编辑"这两个菜单项JMenu file = new JMenu("文件");JMenu edit = new JMenu("编辑");(3)先设计一个匿名部类,为文件、编辑菜单添加新建和其他下拉子菜单“新建”子菜单:创建OpenL类实现了ActionLister并实现其读取文件的功能以匿名部类的形式创建菜单监听器这些代码的作用是实现对新建、保存、打开、退出、复制进行监听,// 实现文本文件的打开功能----即文件菜单下的子菜单"打开"class openL implements ActionListener {public void actionPerformed(ActionEvent e) {JFileChooser fc = new JFileChooser();int returnVal = fc.showDialog(Bjq.this, "打开");“退出”子菜单://实现文本文件的退出功能----即文件菜单下的子菜单"退出"class exitL implements ActionListener {public void actionPerformed(ActionEvent e) {System.exit(0);}}//新建、保存、复制、粘贴与之相类似就不做说明(4)右键快捷菜单的字体子菜单的创建:字体包括字体的大小和字体的颜色等等// 设计字体大小class fontsize implements ActionListener {public void actionPerformed(ActionEvent e) {int n;String no;no=JOptionPane.showInputDialog("请输入你想要的字体大小:");n=Integer.parseInt(no);Font ft;ft=new Font("",Font.BOLD,n);aa.setFont(ft);}}通过用户输入所需的字号的大小来调节字体大小以满足不同需要,// 设计字体颜色class fontcolor implements ActionListener {public void actionPerformed(ActionEvent e) {Color a=new Color(0,192,191);JColorChooser c=new JColorChooser();a=c.showDialog(Bjq.this, "颜色选择框",a);aa.setForeground(a);}}(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:复制、粘贴、字体大小、字体颜色。
popup = new JPopupMenu();JMenuItem copy = new JMenuItem("复制");JMenuItem word = new JMenuItem("字体");public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){}当单击右键时可以弹出复制、粘贴和字体菜单,实现功能,实现鼠标的控制来完成弹出菜单的操作。
(6)为窗体添加监听器当用户按关闭按钮时就可以将窗口关闭,实现了对窗体的控制。
// 关闭窗口protected static final class appCloseL extends WindowAdapter {public void windowClosing(WindowEvent e) {System.exit(0);}f.setSize(800, 500);f.setVisible(true);(这两个代码是设计窗体的的大小和窗口的可见性。
)(7)设计main方法:为整个程序的开始提供了入口,public static void main(String args[]) {JFrame f = new JFrame();Bjq applet = new Bjq();f.setTitle("08通信(2)班骆玉春设计的文本编辑器Bjq");f.setBackground(Color.red);f.getContentPane().add(applet, BorderLayout.CENTER);f.addWindowListener(new appCloseL());f.setSize(800, 500);f.setVisible(true);f.pack();}为静态的主函数。
三、测试效果1:两个菜单项:文件和编辑的截图:2:编辑菜单以及子菜单的截图:3:右键弹出快捷菜单的截图:4:新建并通过快捷键复制和设置字体颜色为红色的截图:5:保存文件并从保存到的目录下打开文件的截图:6:打开其他目录下的文件的截图:7: 设置字体的大小和颜色的截图:四、设计体会Java语言是很神奇的一门课程,我喜欢编程。
喜欢最后编完的一刹那的成功,自从我进了学校选择了通信专业后就更加喜欢了,更是备感Java的重要性,天天接触Java时,越来越着迷于它。
尤其是进行课程设计,我更加深刻体会到了Java的诡异,无法掌控,最后的程序虽没有实现所有功能,但也可以运行了,这次课程设计中我独立完成了程序的绝大多数部分,很开心。
不过有太多不会,总是蒙一些东西。
有些一知半解的东西还是不了解,有些东西是会用了,但对其工作原理却很模糊。
这些都是以后在学Java用Java的路上需要解决的,Java的魅力真的让人着迷。
在课程设计的过程我遇到了好多的麻烦,有些是自己的马虎,有些也是因为程序太长有时会出一些小的问题,都是自己不应该发生的。
但有些是不可以避免的啊,所以说我们在进行Java课程设计的时候要认真仔细不要只图快,要认真每一个环节的输入,否则会给我们带来许多不必要的麻烦,因此要想做好一个好的完整的Java程序一定要有足够的耐心,只有这样你才会有好的结果,才会感觉到成功的喜悦,理解到认真和粗心的后果。
总之,这次设计还是教了我很多,包括做人的道理,以及一些在平时生活中不可能遇见的一些问题,使我领略到一些人生道理,这些是在现实生活中难以解决的,下学期就要考二级,很想学好计算机,更想把Java掌握的更加熟练,因为它总能给我意外的收获,使我对人生有新的认识,让我感受到最后成功那一刻的美妙、开心!结语就用:“Java!”结束吧!是她给了我对计算机的进一步了解,我更加热爱学习她了。
java课程设计报告
Java课程设计报告专业:计算机科学与技术班级:0820542 学号:姓名:用Java 设计文本编辑器MyTxt内容提要:在本文构造实现了一个文本编辑器MyTxt,主要内容包括:MyTxt的功能需求分析;MyTxt的基本设计思路和类的划分;MyTxtr 的具体实现。
关键字:Java、文本编辑器MyTxt引言:设计实现一个Java 应用程序的过程如下:(1)功能需求分析。
(2)设计和类划分。
(3)代码编写实现。
本文就按照这个步骤来实现文本编辑器MyTxt 的制作。
正文:1、MyTxt 功能需求分析作为文本编辑器,至少应该具备以下几种功能:(1)所见即所得的文本输入。
(2)方便的选中文本、复制文本、删除文本、插入文本的功能。
(3)方便的查找指定文字、替换文字的功能。
(4)打印功能。
(5)简单的排版功能,如设置字体、字号等。
另外,还要求MyTxt 实现一个称为“经典视图Classic View”的功能,用以使用经典仿Terminal形式的界面。
2、MyTxt 基本设计思路和类划分基于第1 节中提出对于MyTxt 功能需求的分析,对这个应用程序设计划分类如下:(1)MyTxt:这个类作为主类,实现主要功能,并实现图形用户界面。
(2)MenuColor:这个类用来实现文字颜色的编辑功能。
(3)MenuFont:这个类用来实现文字字体、字号的编辑功能。
(4)PrintableTextArea:这个类将实现TextArea 的功能,并使得文字可以打印输出。
3、MyTxt 的具体实现3.1、MyTxt 类的设计MyTxt 类实现整体功能,包括窗体的初始化、各种用户事件监听和响应(编辑、保存、打开等等)。
1. 父类和主要接口设计MyTxt 整个窗体特性继承自JFrame 类。
为了对用户命令做出响应(如保存文件),MyTxt 类必须能够监听到用户的命令,因此设计MyTxt 类实现ActionListener 接口。
JAVA程序设计综合实验报告(文本编辑器)
JDesktopPane desk;
FirstWindow(String s){
setTitle(s);
setSize(800,600);
setLocation(120,120);
setVisible(true);
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
MyInternalFrame internalFrame=(MyInternalFrame)desk.getSelectedFrame();
JTextArea text=internalFrame.getJTextArea();
String str;
op1.setVisible(true);
try{
item1_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK ));
item1_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK ));
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
//剪切
item2_Cut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addInternalFrameListener(new InternalFrameAdapter(){
Java课程设计文本编辑器
Java 课程设计文本编辑器
(()5) { (,"调色板"()); ()
(); } (()6) { (); } (()7) { (0); }
(()8) {
(); ();
^0; ( (""()));
25 / 30
Java 课程设计文本编辑器
} (()9) {
(); ();
^2; ( (""()));
15 / 30
Java 课程设计文本编辑器
16 / 30
图 3:字体选择下拉列表:
Java 课程设计文本编辑器
图 4:文本编辑器文件对话框(保存文件对话框):
17 / 30
Java 课程设计文本编辑器
图 5:选择背景颜色对话框:
18 / 30
附录(源代码):
.*; .*; .*; ; .*; .*;
6 / 30
Java 课程设计文本编辑器
} ( e1) {} } } } 文本编辑器的保存和打开功能的实现用文件对话框与输入输出流来完成。先建立打开和保存 对话框,在 ( e)里分别用()和()方法实现保存和打开。
2) 调用颜色对话框 (()5)
{ (,"调色板"()); ()
(); } 文本编辑器要实现背景功能可以用包中的类的静态方法。 ( ),其中参数指定对话框所 依赖的组件,即文本编辑器中的文本区,指定对话框的标题“调色板”,指定对话框返回的 初始颜色,即对话框消失后,返回默认值。
3) 建立下拉列表实现对字体的设置 ; (); []();
7 / 30
Java 课程设计文本编辑器
( e) {
(); (,15);
(f); } 文本编辑器要实现对字体的设置,我选用了对象调用[] ()方法,该方法可以获取计算机上所 有可用的字体名称,并存放到字符串数组中。
java课程设计报告 记事本
泰山医学院Java课程设计报告记事本软件设计学生姓名:学号:年级专业:指导老师:张峰学院:山东·提交日期:年月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 记事本功能 (3)2.3 界面设计 (3)3. 详细设计 (3)3.1 使用的JAVA类的说明 (3)3.1.1 主要的类 (3)3.1.2 类的主要方法 (4)3.2 设计总体认识 (5)3.3 程序流程图 (6)4. 运行结果 (6)5. 测试分析 (7)6. 源程序 (7)7. 总结 (10)1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。
文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写记事本,具有基本的文字编辑功能。
Java是由Sun公司开发的新一代纯面向对象的网络编程语言。
其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。
正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。
Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。
Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。
还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。
Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。
作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。
Java 语言去掉了C++语言的一些容易引起错误的特性。
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课程设计报告
制作一个文本编辑器-java课程设计报告封面《Java语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间:2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路…………………………………………… (2)二、设计过程…………………………………………… (3)三、测试结果…………………………………………… (12)四、心得体会…………………………………………… (13)五、程序代码…………………………………………… (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。
现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。
在编辑菜单下的子菜单复制,可以进行对文本的复制。
在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。
而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。
而且用户也可以根据自己的需要改变窗体的大小。
2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。
java课程设计报告-java课程设计
Java 课程设计报告题目:文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计的目的与要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3二、综合设计正文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31. 系统分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31.1系统开发背景、开发范围、建设目标与必要性开发⋯⋯⋯⋯⋯⋯⋯⋯31.2需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.1功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.2系统运行环境与开发工具⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43 . 系统实施⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 3.1 源程序⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43.2 .系统测试及部分截图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12三、综合设计总结或结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13四、参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java 程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。
二、综合设计正文1系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
1.2需求分析程序设计主要分为两大部分:简单 GUI 设计和程序功能设计。
通过 GUI 设计实现图形用户界面,提供图形菜单,方便用户操作。
使用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 文件,双击运行。
虚拟的java编辑器课程设计报告
虚拟的Java编辑器设计报告一、需求分析此次课程设计名称为JAVA编辑器。
需要设计一个图形界面的文本编辑器,能编辑Java语言源程序,界面和功能类似Editplus。
演示程序为计算机和用户的对话形式执行,即在计算机的终端显示图形界面的文档编辑器,然后用户就可以实现编辑,保存等像记事本一样的功能。
(1)打开以有文件,保存编辑文件,退出编辑器并提醒保存;(2)查找编辑区中的字符串,用已知字符串替换查找的字符串;(3)显示文件的存取路径;(4)剪切,复制,粘贴,删除等;(5)改变文本区字体的颜色,字体大小和形状的功能;(6)关键字显示蓝色、类库类名显示红色。
二. 设计1.设计思想Java编辑器是用来编写java程序的源代码。
Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。
图形界面的实现:就选择了swing来完成实现,在选择组件上,文本编辑区就选用了JTextPane作为主要的部件。
由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。
在设计类的时候,考虑到简单明了,一个主类,一个默认属性myfr类,染色类SyntaxHighlighter 作为程序的整体框架,所有的对象和方法都是在默认属性类和染色类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类染色类中实现的。
本程序主类完成对象的实例化及显示。
2.功能设计本程序涉及到了对图形用户界面的设计与实现和菜单的设计与实现。
用户可以通过此编辑器对java文件进行文字的复制、剪切、粘贴、删除、查找、替换、时间的插入、设置字体颜色和关键字、类库名着色等。
本程序主要有以下3个模块组成:(1)主体模块由窗口、功能菜单、文本框组成。
为用户选择编辑的功能提供了简单、方便的界面。
Java的窗口由JFrame类生成,我们可以在创建的空白窗口上添加组件。
