制作一个文本编辑器 java课程设计报告

时间:2024.4.20

《Java语言程序设计》

课程设计报告

设计题目:       制作一个文本编辑器      

    院:                    

    级:                                

    名:                                

    号:                                

指导教师:       黄建华                    

实验地点:       三教机六                

课设时间:       20##-12-20——20##-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!”结束吧!是她给了我对计算机的进一步了解,我更加热爱

学习她了。

附:源程序代码

//Bjq.java

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.*;

public class Bjq extends JPanel   {

       private JPopupMenu popupMenu = new JPopupMenu();

       JTextArea aa = new JTextArea("", 20, 50);//构造一个文本域

       JScrollPane bb = new JScrollPane(aa);

       JMenuBar cc = new JMenuBar();//创建一个空的菜单条

       JMenu file = new JMenu("文件");

                                        //创建"文件"和"编辑"这两个菜单项

       JMenu edit = new JMenu("编辑");

      

       // 菜单内容

       JMenuItem dd;

       // 实例化剪切板

       Clipboard clipbd = getToolkit().getSystemClipboard();

       ///////

       JMenu fileMenu;

 JPopupMenu jPopupMenuOne;

 JMenuItem openFile,closeFile,exit;

 JRadioButtonMenuItem copyFile,pasteFile;

 ButtonGroup buttonGroupOne;

    public Bjq() {

  //新建一个内部类

              class newL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                            aa.setDocument(new PlainDocument());

                     }

              }

 

       // 实现文本文件的打开功能----即文件菜单下的子菜单"打开"

              class openL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                            JFileChooser fc = new JFileChooser();

                            int returnVal = fc.showDialog(Bjq.this, "打开");

                            if (returnVal == JFileChooser.APPROVE_OPTION) {

                                   String file = fc.getSelectedFile().getPath();

                                   if (file == null) {

                                          return;

                                   }

                                   // 读取文件

                                   try {

                                          Reader in = new FileReader(file);

                                          char[] buff = new char[4096];

                                          int nch;

                                          while ((nch = in.read(buff, 0, buff.length)) != -1) {

                                                 aa.setDocument(new PlainDocument());

                                                 aa.append(new String(buff, 0, nch));

                                          }

                                   } catch (IOException io) {

                                          System.err.println("IOException: " + io.getMessage());

                                   }

                            } else {

                                   return;

                            }

                     }

              }

              // 实现文本文件的保存功能----即文件菜单下的子菜单"保存"

              class saveL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                            JFileChooser fc = new JFileChooser();

                            int returnVal = fc.showSaveDialog(Bjq.this);

                            if (returnVal == JFileChooser.APPROVE_OPTION) {

                                   String savefile = fc.getSelectedFile().getPath();

                                   if (savefile == null) {

                                          return;

                                   } else {

                                          String docToSave = aa.getText();

                                          if (docToSave != null) {

                                                 FileOutputStream fstrm = null;

                                                 BufferedOutputStream ostrm = null;

                                                 try {

                                                        fstrm = new FileOutputStream(savefile);

                                                        ostrm = new BufferedOutputStream(fstrm);

                                                        byte[] bytes = null;

                                                        try {

                                                               bytes = docToSave.getBytes();

                                                        } catch (Exception e1) {

                                                               e1.printStackTrace();

                                                        }

                                                        ostrm.write(bytes);

                                                 } catch (IOException io) {

                                                        System.err.println("IOException: "

                                                                      + io.getMessage());

                                                 } finally {

                                                        try {

                                                               ostrm.flush();

                                                               fstrm.close();

                                                               ostrm.close();

                                                        } catch (IOException ioe) {

                                                               System.err.println("IOException: "

                                                                             + ioe.getMessage());

                                                        }

                                                 }

                                          }

                                   }

                            } else {

                                   return;

                            }

                     }

              }

              //实现文本文件的退出功能----即文件菜单下的子菜单"退出"

              class exitL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                            System.exit(0);

                     }

              }

              // 实现文本文件的粘贴功能----即编辑菜单下的子菜单"粘贴"

              class copyL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                            String selection = aa.getSelectedText();

                            StringSelection clipString = new StringSelection(selection);

                            clipbd.setContents(clipString, clipString);

                     }

              }

             

// 粘贴

              class pasteL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                            Transferable clipData = clipbd.getContents(Bjq.this);

                            try {

                                   String clipString = (String) clipData

                                                 .getTransferData(DataFlavor.stringFlavor);

                                   aa.replaceRange(clipString, aa.getSelectionStart(), aa

                                                 .getSelectionEnd());

                            } catch (Exception ex) {

                            }

                     }

              }

              // 设计字体大小

              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);                   

                     }

              } 

             

              // 注册一个事件监听器

              class jtaL implements ActionListener {

                     public void actionPerformed(ActionEvent e) {

                     }

              }

              //

              //define popmenu 定义弹出菜单

       

        JMenuItem cut = new JMenuItem("粘贴");

        JMenuItem FontSize = new JMenuItem("字体大小");

        JMenuItem FontColor = new JMenuItem("字体颜色");

              JMenuItem copy = new JMenuItem("复制");

        popupMenu.add(copy);

        copy.addActionListener(new copyL());

        popupMenu.add(cut);

        cut.addActionListener(new pasteL());

        popupMenu.add(FontSize);

        FontSize.addActionListener(new fontsize());

        popupMenu.add(FontColor);

        FontColor.addActionListener(new fontcolor());

        aa.addMouseListener(new MouseAdapter(){

            public void mousePressed(MouseEvent e){checkForTriggerEvent(e);}

            public void mouseReleased(MouseEvent e){checkForTriggerEvent(e);}

            private void checkForTriggerEvent(MouseEvent e){

                if(e.isPopupTrigger())

                    popupMenu.show(e.getComponent(),e.getX(),e.getY());

            }

        });

       

      

        //文本区添加快捷菜单

              // 快捷键设置

              file.add(dd = new JMenuItem("新建", KeyEvent.VK_N));

              dd.addActionListener(new newL());

              file.add(dd = new JMenuItem("打开", KeyEvent.VK_O));

              dd.addActionListener(new openL());

              file.add(dd = new JMenuItem("保存", KeyEvent.VK_S));

              dd.addActionListener(new saveL());

              file.add(dd = new JMenuItem("退出", KeyEvent.VK_X));

              dd.addActionListener(new exitL());

              edit.add(dd = new JMenuItem("复制", KeyEvent.VK_C));

              dd.addActionListener(new copyL());

              edit.add(dd = new JMenuItem("粘帖", KeyEvent.VK_P));

              dd.addActionListener(new pasteL());

dd.addActionListener(new fontsize());

           dd.addActionListener(new fontcolor());

              // 设置页面布局风格

              setLayout(new BorderLayout());

              file.setMnemonic(KeyEvent.VK_F);

              cc.add(file);

              edit.setMnemonic(KeyEvent.VK_E);

              cc.add(edit);

cc.add(Box.createHorizontalGlue());

              add(cc, BorderLayout.NORTH);

              add(bb, BorderLayout.SOUTH);

              aa.getCaret().setVisible(true);

              aa.setCaretPosition(0);

       }

       // 关闭窗口

       protected static final class appCloseL extends WindowAdapter {

              public void windowClosing(WindowEvent e) {

                     System.exit(0);

              }

       }

       // 主函数,程序入口

       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();

       }

        

}

更多相关推荐:
java课程设计报告范例

河北科技大学课程设计报告学生姓名祝冬冬学号专业班级计算机科学与技术课程名称学年学期指导教师2011年6月课程设计成绩评定表目录示例一二三1234四五设计题目1设计目的1设计原理及方案1使用的软件工具和环境1需求...

Java课程设计报告模板

Java程序设计课程设计报告20xx20xx年度第1学期Hannio塔专业学生姓名班级学号指导教师完成日期计算机科学技术网络工程马千里B计算机1021010704213徐森20xx年1月8日Hannoi塔目录目...

Java课程设计报告

安阳工学院计算机学院JAVA课程设计报告蜘蛛纸牌游戏专业班级09级网络工程2班学生姓名李瑞琳学生学号20xx03060016小组成员司慧晓郑亚楠司小婷杨达允指导教师姓名宋强目录1选题目的与系统概述32系统可行性...

java课程设计报告

黄淮学院JAVA课程设计报告题目:《日记本的设计与实现》课程设计学院:信息工程学院姓名:学号:专业:软件工程班级:软工1101B班指导教师:二0##年十二月目录1.引言...32.设计目的与任务...43.设计…

java课程设计报告书

java程序设计与应用开发Java课程设计报告书题目学籍管理系统班级数媒学号姓名教师20xx年12月24日1java程序设计与应用开发学籍管理系统一课程设计的目的与要求一课程设计目的与任务随着社会的发展及互联网...

Java课程设计报告【模板】

课程设计报告设计题目专业计算机科学与技术班级101学号20xx16021127学生姓名李贵云指导教师布瑞琴起至时间12161223教师评分20xx年月日目录1概述11目的这学期我们学习了Java语言Java语言...

java课程设计报告 简单绘画板

Java课程设计报告第1页题目班级学号姓名指导老师完成起止日期20xx年12月7日20xx年12月26日目录1题目与要求311题目312参考文献32功能描述43设计思想与系统结构531类设计532结构图64用户...

Java 课程设计报告 扫雷游戏

东华理工大学长江学院课程设计报告封面Java课程设计题目扫雷游戏姓名学号指导老师黄国辉设计时间20xx年4月1东华理工大学长江学院课程设计报告摘要摘要在今天游戏日益快速更新的情况下相信大家对Windows20x...

Java课程设计报告

合肥学院计算机科学与技术系课程设计报告20##~20##学年第#学期课程:Java语言程序设计课程设计名称:企业人事管理系统专业班级:08网络工程(1)班20##年9月一、需求分析系统需求分析:考察中小企业企业…

java课程设计报告

淮海工学院计算机工程学院课程设计报告设计名称面向对象课程设计选题名称图像浏览器的设计与实现姓名学号专业班级网络工程122班系院计算机工程学院设计时间设计地点软件实验室教室面向对象课程设计报告第2页共16页面向对...

java课程设计报告

课程设计说明书课程名称Java程序设计专业班级设计人山东科技大学20xx年1月14日山东科技大学学生课程设计目录1需求分析说明111背景112功能要求113运行环境114功能实现12概要设计说明221模块调用图...

java课程设计万年历程序设计报告

广东商学院华商学院实验报告课程名称Java程序设计课程设计实验项目名称万年历班级与班级代码XX专软件X班实验室名称或课室厚德楼B203专业任课教师刘X璐学号310010114姓名XXX实验日期20xx年12月日...

java 课程设计报告(32篇)