代码编辑器的java实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码编辑器的java实现
摘要
如果我们把不同的程序开发人员比作三国演义中的各路诸侯大将的话,那么代码编辑器绝对可以称之我们手中的神兵利器。对于每个程序猿来说,内心的深处都想有一把自己的“青龙偃月刀”和属于自己的一个代码编辑器。我也有这个想法,我也想自己写一个代码编辑器来满足我的内心深处。所以这次java的课程作业我选择了这个题目!
关键词:Java;代码编辑器;关键字变色;编译和运行
前言
通过一学期的Java学习,我对Java的理论知识有了一些了解。但是,只有理论联系实际才能更好的掌握理论,所以这次Java课程设计我选择了Java程序编辑器这个课题,希望可以锻炼自己的动手能力。我上交给老师您的代码是我参考的网上的一个牛人写的代码,并在他的代码上进行了功能的增加,至于我增加了多少功能,我会论文的附录中给出详细的对比。
1. 软件的定义
编写一个界面像Windows系统的记事本的代码编辑器,功能比记事本更强大(针对某一方面)具备以下功能:
(1)打开、保存文件功能;
(2)能够识别Java中的关键字并能将关键字以高亮的形式显示出来;
(3)能够批量的删除代码中的注释;
(4)能通过按下按钮调用DOS窗口;
(5)能编译和运行Java程序;
(6)能够检查括号是否匹配。
2.开发环境
IDE: eclipse
JDK: jdk-7u45-windows-x64
OS:Windows 7 —X64
3.代码的详细说明
主界面:
syntaxcolor.v4包中的DemoFrame.java文件,主界面就是一个Frame,然后在上面加上一个菜单栏,一个工具栏和两个Panel,一个panel里面放着JTextPane,另一个里面放着一个几个JLable,用来显示当前鼠标是在第几行,第几列,该Panel放在Frame最下
面。
菜单栏:
总共有3个JMenu,一个是文件,一个是编辑,一个是帮助。3个菜单里面各有下拉菜单。文件JMenu有2个JMenuItem分别为openMenuItem、ExitMenuItem,编辑JMenu有2个JMenuItem分别为cutMentItem、pasteMEnuItem,帮助JMenu有一个JMenuItem是aboutMenuItem用来显示代码编辑器的相关的信息。
工具栏:
从左到右分别为打开文件、新建文件,保存、批量去除注释、调用DOS 窗口、编译执行和运行Java程序、括号的匹配。下面详细的介绍每个工具栏
的按钮
打开文件按钮:
此时选择打开窗口可以看到的Test.java程序。
代码的实现:
创建一个BufferedReader 类型的br来读取从打开文件的对话框中选择的文件,读取到Panel1中的jTextPane中。
新建文件按钮:
说明:如果JTextPane中有字符的话(即代码编辑区有字),先让用户保存,再新建一个新的JTextPane(但是我在实现的时候遇到了问题了,网上的文本编辑器大部分是用JTextArea来实现的,而不是JTextpane来实现的,在JTextPane中没有JTextArea里面的对应的方法,而且我在网上没有找到了好的解决方案,所以我的做法是把按下新建按钮后把当前JTextPane的清空。
保存按钮:
代码的实现
定义一个BufferedWriter类型的bw和FileWriter类型的fw通过bw把字符写到fw对应的文件中去。对应代码中的fileSava()函数和fileSavaAs ()函数。
批量去除注释
代码的实现:
是通过将当前的文件保存到默认的路径中去,先将代码中的注释去除,通过将去除到注释的代码保存当前文件的系统目录下,再用打开文件操作来把去除注释的代码重新读入JTextPane中去。在文件的保存路径下,会产生一个“文件名”+“.bak”的文件(该文件为没有注释的文件),这样可以用来批量的删除注释,并保存在对应文件名的.bak文件中
DOS窗口的调用
通过组合使用Java提供的Runtime类和Process类的方法实现在java 中调用DOS命令,因为我自己在编写java的代码的时候,写好了要按win+R 按键时还要出入cmd命令,我感觉特别的繁琐,于是我写了这个功能,通过一个按钮就能调用出DOS窗口,方便了用户的使用。对应于compile.java文件。
编译和运行
对于刚写的代码要进行编译和运行的,我的策略是通过先对文件进行保存,就在这个时候来获取到保存文件的路径以及文件名等信息。然后就是通过通过组合使用Java提供的Runtime类和Process类的方法实现在java中调用DOS命令javac —文件名,编译成功后就会自动的运行,会弹出一个Frame来显示指定的屏幕输出,其实这个的实现是通过用户本地的JDK来实现的,弹出的Frame是把DOS窗口的内容读入进去在显示出来!
括号的匹配
我们在写代码的时候经常会出现多一个多括号少一个括号,有时候编译器可能会给出一条我们不认识的错误,这个时候我们会花费大量的时间来检查错误,所以我就想我的代码编辑器中要有这个功能。在代码的实现上是通过定义一个栈将是括号的左边加入栈,如果扫描到括号的右面就把对应的括号出栈,到最后如果栈空,则总个括号匹配成功,如果栈不空则括号匹配不成功,并用红色将其标出。
课程设计总结
本次课程设计,让我获益匪浅,不仅更深入的了解Java这门学科,更使自己有了继续探索的兴趣。对于个人而言,在程序设计的过程中,我深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。在今后的学习中,我定将“认真严谨时刻作为自的谨言。与此同时,本小组成员的互帮互助,让我体会到了团结的力量,而更让人难以忘怀的是在热烈讨论问题时,那激情横溢的场面。总之,此次课程设计在我的学生生涯中启上了至关重要的作用。最后,真诚的感谢汪世元和我们机器人实验室的学长和学姐们的帮助。
选题的时候,我一开始也不知道要写什么好,想了好久后决定做一个代码编辑器,因为我们平常我们在用代码编辑器的时候,经常觉得代码的编辑器没有按照自己的习惯,觉得很变扭,再给加上觉得能做出一个代码编辑器很牛,也想在自己的大学里面能做出一个拿的出手的小程序,在同学们之间能炫耀一下,在网上也看到很多网友做了很多不错的小程序,然后放到自己的