2023年-虚拟的java编辑器课程设计报告.docx
《2023年-虚拟的java编辑器课程设计报告.docx》由会员分享,可在线阅读,更多相关《2023年-虚拟的java编辑器课程设计报告.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、虚拟的Java编辑器设计报告一、需求分析此次课程设计名称为JAVA编辑器。需要设计一个图形界面的文本编辑器,能编辑Java语言源程 序,界面和功能类似Editplus。演示程序为计算机和用户的对话形式执行,即在计算机的终端显示图形界面的文档编辑器,然后 用户就可以实现编辑,保存等像记事本一样的功能。(1)打开以有文件,保存编辑文件,退出编辑器并提醒保存;(2)查找编辑区中的字符串,用已知字符串替换查找的字符串;(3)显示文件的存取路径;(4)剪切,复制,粘贴,删除等;(5)改变文本区字体的颜色,字体大小和形状的功能;(6)关键字显示蓝色、类库类名显示红色。二.设计1.设计思想Java编辑器是用
2、来编写java程序的源代码。Java程序编辑器是:图形界面、线程、流与文 件等技术的综合应用。图形界面的实现:就选择了 swing来完成实现,在选择组件上,文本编辑区就选用了(F)关键字显示蓝色、类库类名显示红色功能图如下:U!经验和体会。通过此次成功的实现了 Java文本编辑器的设计与编写,我进一步巩固、加深了对专业课程JAVA语言教程的基础理论知识的理解,使我熟练的掌握了 JAVA语言的输入输 出流、数据库连接的使用,灵活运用各种类库。此次利用所 学知识,开发小型应用系统我掌握了如何运用JAVA语言编 写调试应用系统程序,并且训练了我独立开发应用系统,进 行数据处理的综合能力。同时,对于给
3、定的设计题目,如何 对其进行分析,理清思路,并给出相应的数学模型,也是一 项很好的考验。通过对这个课题的学习,我发现Java语言作为一种新 兴的编辑语言,优势很明显,整个程序的结构很清晰,让人 一目了然。而且,程序的编辑、修改、移植性也很强,可以 通过对功能模块的添加,增加程序的实用性,例如查找、替 换、打印等等,这些事今后可以进一步研究发展的方向。通过对这个课题的训练,使我基本掌握了 Java编程的 基础知识,主体模块与功能模块的结合技巧、方法,提高了 我的自学能力,也锻炼了我分析问题、解决问题的能力!此次课程设计给我印象最深的就是,在程序中非常容易 出小的毛病,而这些小毛病往往浪费大量的时
4、间而不得其 解,让人烦恼至极。比如,在主方法体中忘记定义一些变量, 导致程序运行时程序也报出大量错,有时在鼠标随便定位处 不小心按下一个字符,结果运行报错后出现意外错误,有时 忘记保存等等此后让我懂得写程序一定要仔细,要认真 写清每一行代码。附录:主要源程序import java.awt.*;import java.awt.event.*;import java.awt.Color;import java.io.*;import java.util.*;import java.utiLHashSet;import java.util.Set;import java.awt.datatransf
5、cr.*;import java.awt.event.*;import java.text.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.text.Caret;import javax.swing.JFrame;import javax.swing.JTextPane;import javax.swing.SwingUtilities;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;impo
6、rt javax.swing.text.BadLocationException;import javax.swing.text.Document;import javax.swing.text.Style;import javax.swing.text.StyleConstants;import javax.swing.text.StyledDocument;import javax.swing.undo.*;public class okpublic static void main(String args) (myfr fr=new myfr (我的 java 编辑器) fr.setS
7、ize(600,400);) )/myfr 主窗体类/class myfr extends JFrame implements ActionListener (String str,strnext,path,fname; /部分变量的声明JPanel mainpane;JFileChooser choose = new JFileChooser。; /文件对话框Dialog find,replace; /find 为查找对话框,replace 对话框JTextField findtxt,repltxt; /find为查找对话框的输入文本区,replace对话框的输入文本区 Font newfo
8、nt;JButton findenter,replb,but; /find为查找对话框,replace对话框的确定按钮JLabel state=new JLabel(njava编辑器未命名文档)状态栏JTextPane txtl; 主输入文本区File newfiles;JPopupMenu popm; /弹出菜单声明JMenu ml,m2,m3,m4,m5,m6; 各菜单项JMenuItem m61 ,m62,m26,m271,m34,m51,m52,m53,m54,p_copy,p_cut,p_paste,p_del,font;int startp,endp,nexttemp,newsta
9、rtp,newendp; 查找替换时所用的临时变量JToolBar toolbar = new JToolBar。; /工具条private Set keywords;private Set classwords;private Style kcywordStylc;private Style classwordStyle;private Style normalStyle;myfr(String sss) /构造函数开始super(sss);JMenuBar mb=new JMenuBarQ;fname=null; 初始文件名为空findenter=new JButtnn(“确定”);Hnd
10、enter.addActionListener(this); /声明对话框中上确定按钮,并注册事件 replb=new JButton(确定); replb.addActionListener(this);mainpane=(JPanel)this.getContentPane(); mainpane.setLayout(new BorderLayout(); txtl=new JTextPane();txt 1 .getDocument().addDocumentListener(new SyntaxHighlighter(txtl);txtl .addMouseListener(new h
11、andlemouse(this);/注册鼠标右击事件 txtl.setFont(new Font(“宋体”,Font.PLAIN, 18);mainpane.add(txtl, BorderLayout.CENTER);mainpane.add(nNorthn,toolbar);mainpane.add(HSouth,state);JScrollPane sll = new JScrollPane。; /创建滚动条 mainpane.add(,Centern, sll);slLgetViewport().add(txtl); /将滚动条装入文本区popm=new JPopupMenu(); /
12、POPMeun 开始 p_copy=new JMenuItem(n复制”);p_copy.addActionListener(this);Keystroke keycopyp=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK); p_copy.setAccelerator(keycopyp);p_cut=new JMenuItem(剪切); p_cut.addActionListener(this);Keystroke keycutp=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK
13、); p_cut.setAccelerator(keycutp);p_paste二new JMenuItem(粘贝占);p_paste.addActionListener(this);Keystroke keypp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); p_paste.setAccelerator(keypp);p_del二new JMenuItem。删除); p_deLaddActionListener(this);Keystroke keydelp=KeyStroke.getKeyStroke(KeyEvent.VK_
14、DELETE,0); p_del.setAccelerator(keydelp);popm.add(p_copy);popm.add(p_cut);popm.add(p_paste);popm.add(p_del);txtl.add(popm); /POPMenu 结束ml=new JMenu(文件(F)”);ml.setMnemonic(F); 定义快捷方式JMenuItem mlO=new JMenuItem(新建”);mlO.addActionListener(this); 注册事件监听器Keystroke keynew=KeyStroke.getKeyStroke(KeyEvent.V
15、K_N,Event.CTRL_MASK); /定 义快捷键 m 10.setAccelerator(keynew);JMenuItem mil=new JMenuItem(打开”);ml 1.add ActionListener( this);Keystroke keyopen=KeyStroke.getKeyStroke(KeyEvent.VK_O,Event.CTRL_MASK);ml 1 .setAccelerator(keyopen);JMenuItem ml2=new JMenuItem(保存”);ml2.addActionListener(this);Keystroke keysa
16、ve=KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK);ml 2.setAccelerator(keysave);JMenuItem m 13=new JMenuItem。另保存为);ml3.addActionListener(this);JMenuItem m 14二new JMenuItem(退出);ml4.addActionListener(this);Keystroke keyexit=KeyStroke.getKeyStroke(KeyEvent.VK_F4,Event.ALT_MASK);ml4.setAccelerator
17、(keyexit);llllllllllllllllllllllllllllllllllllllllllllm2=new JMenu(编 辑(E)”);m2.setMnemonic(,E,);JMenuItem m21=new JMenuItem(复制);m21 .addActionListener(this);Keystroke keycopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);m21 .setAccelerator(keycopy);JMenuItem m22=new JMenuItem(剪切);m22.addAct
18、ionListener(this);Keystroke keycut=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK);m22.setAccelerator(keycut);JMenuItem m23=ncw JMenuItem(粘贝占”);m23.addActionListener(this);Keystroke keyp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);m23.setAccelerator(keyp);JMenuItem m24=new JMenuItem(
19、删除);m24.addActionListener(this);Keystroke keyde!=KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0); m24.setAccelerator(keydel);JMenuItem m25=new JMenuItem(查找); m25 .addActionListener(this);Keystroke keyfind=KeyStroke.getKeyStroke(KeyEvent.VK_F,Event.CTRL_MASK); m25.set Accelerator(key find);m26=new JMenu
20、Item。查找下一个);m26.addActionListener(this);Keystroke keyfn=KeyStroke.getKeyStroke(KeyEvent.VK_F3,0);m26.setAccelerator(keyfn);m26. setEnabled(false);JMenuItem m27二new JMenuItem(替换);m27.addActionListener(this);Keystroke keyrepl=KeyStroke.getKeyStroke(KeyEvent.VK_H,Event.CTRL_MASK); m27.setAccelerator(ke
21、yrepl);m271=new JMenuItem(替换下一个);m271 .setEnabled(false);m271 .addActionListener(this);Keystroke keyrepn=KeyStroke.getKeyStroke(KeyEvent.VK_F6,0);m271 .setAccelerator(keyrepn);JMenuItem m28=new JMenuItem(全选);m28.addActionListener(this);Keystroke keya!l=KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL
22、_MASK); m28.setAccelerator(keyall);JMenuItem m29=new JMenuItem(日期/时间”); m29.addActionListener(this);lllllllllllllllllllllllllllllllllllllllllllm3=new JMenu(“格式(O)”);m3.setMnemonic(,O,);font=new JMenuItem(字体F);font.addActionListener(this);JMenuItem m33=ncw JMenuItem(“字体颜色); m33.addActionListener(this
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 虚拟 java 编辑器 课程设计 报告
限制150内