版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、代码编辑器的java实现摘 要如果我们把不同的程序开发人员比作三国演义中的各路诸侯大将的话,那么代码编辑器绝对可以称之我们手中的神兵利器。对于每个程序猿来说,内心的深处都想有一把自己的“青龙偃月刀”和属于自己的一个代码编辑器。我也有这个想法,我也想自己写一个代码编辑器来满足我的内心深处。所以这次java的课程作业我选择了这个题目!关键词:Java; 代码编辑器; 关键字变色; 编译和运行 前 言通过一学期的Java学习,我对Java的理论知识有了一些了解。但是,只有理论联系实际才能更好的掌握理论,所以这次Java课程设计我选择了Java程序编辑器这个课题,希望可以锻炼自己的动手能力。我上交给老
2、师您的代码是我参考的网上的一个牛人写的代码,并在他的代码上进行了功能的增加,至于我增加了多少功能,我会论文的附录中给出详细的对比。 1. 软件的定义编写一个界面像Windows系统的记事本的代码编辑器,功能比记事本更强大(针对某一方面)具备以下功能: 打开、保存文件功能; 能够识别Java中的关键字并能将关键字以高亮的形式显示出来; 能够批量的删除代码中的注释; 能通过按下按钮调用DOS窗口; 能编译和运行Java程序; 能够检查括号是否匹配。 2. 开发环境IDE: eclipseJDK: jdk-7u45-windows-x64OS: Windows 7 X643. 代码的详细说明主界面:
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有一
4、个JMenuItem是aboutMenuItem用来显示代码编辑器的相关的信息。工具栏:从左到右分别为打开文件、新建文件,保存、批量去除注释、调用DOS窗口、编译执行和运行Java程序、括号的匹配。下面详细的介绍每个工具栏的按钮打开文件按钮: 此时选择打开窗口可以看到的Test.java程序。代码的实现:创建一个BufferedReader 类型的br来读取从打开文件的对话框中选择的文件,读取到Panel1中的jTextPane中。新建文件按钮:说明:如果JTextPane中有字符的话(即代码编辑区有字),先让用户保存,再新建一个新的JTextPane(但是我在实现的时候遇到了问题了,网上的文
5、本编辑器大部分是用JTextArea来实现的,而不是JTextpane来实现的,在JTextPane中没有JTextArea里面的对应的方法,而且我在网上没有找到了好的解决方案,所以我的做法是把按下新建按钮后把当前JTextPane的清空。保存按钮:代码的实现定义一个BufferedWriter类型的bw和FileWriter类型的fw通过bw把字符写到fw对应的文件中去。对应代码中的fileSava()函数和fileSavaAs()函数。批量去除注释代码的实现:是通过将当前的文件保存到默认的路径中去,先将代码中的注释去除,通过将去除到注释的代码保存当前文件的系统目录下,再用打开文件操作来把去
6、除注释的代码重新读入JTextPane中去。在文件的保存路径下,会产生一个“文件名”+“.bak”的文件(该文件为没有注释的文件),这样可以用来批量的删除注释,并保存在对应文件名的.bak文件中DOS窗口的调用通过组合使用Java提供的Runtime类和Process类的方法实现在java中调用DOS命令,因为我自己在编写java的代码的时候,写好了要按win+R按键时还要出入cmd命令,我感觉特别的繁琐,于是我写了这个功能,通过一个按钮就能调用出DOS窗口,方便了用户的使用。对应于compile.java文件。编译和运行对于刚写的代码要进行编译和运行的,我的策略是通过先对文件进行保存,就在这
7、个时候来获取到保存文件的路径以及文件名等信息。然后就是通过通过组合使用Java提供的Runtime类和Process类的方法实现在java中调用DOS命令javac 文件名,编译成功后就会自动的运行,会弹出一个Frame来显示指定的屏幕输出,其实这个的实现是通过用户本地的JDK来实现的,弹出的Frame是把DOS窗口的内容读入进去在显示出来!括号的匹配我们在写代码的时候经常会出现多一个多括号少一个括号,有时候编译器可能会给出一条我们不认识的错误,这个时候我们会花费大量的时间来检查错误,所以我就想我的代码编辑器中要有这个功能。在代码的实现上是通过定义一个栈将是括号的左边加入栈,如果扫描到括号的右
8、面就把对应的括号出栈,到最后如果栈空,则总个括号匹配成功,如果栈不空则括号匹配不成功,并用红色将其标出。课程设计总结本次课程设计,让我获益匪浅,不仅更深入的了解Java这门学科,更使自己有了继续探索的兴趣。对于个人而言,在程序设计的过程中,我深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。在今后的学习中,我定将“认真严谨时刻作为自的谨言。与此同时,本小组成员的互帮互助,让我体会到了团结的力量,而更让人难以忘怀的是在热烈讨论问题时,那激情横溢的场面。总之,此次课程设计在我的学生生涯中启上了至关重要的作用。最后,真诚的感谢汪世元和我们机器人实验室的学长和学姐们的帮助。
9、选题的时候,我一开始也不知道要写什么好,想了好久后决定做一个代码编辑器,因为我们平常我们在用代码编辑器的时候,经常觉得代码的编辑器没有按照自己的习惯,觉得很变扭,再给加上觉得能做出一个代码编辑器很牛,也想在自己的大学里面能做出一个拿的出手的小程序,在同学们之间能炫耀一下,在网上也看到很多网友做了很多不错的小程序,然后放到自己的博客空间上,然后会有很多人在下面评价说,楼主好牛!为了满足我自己的小的虚荣心,我就选择了一个比较难的(我个人认为的)的代码编辑器。在编写代码编辑器的过程中,我学到了很多东西,由于这部分老师上课讲的不多,只能靠自己的从网上一点一点的自学,一开始遇到了很多困难,很多东西都看不
10、懂,而且也没有人跟你讲。我有一段时间萌发了换个简单点的题目,但是后来想做一个在同学中拿的出手的小程序,于是我克服了困难。下面我来讲下我在编写程序时遇到的问题,开始我上网看了很多文本编辑器,它们大部分是用jTextArea来实现的,而且它们都没有实现关键字的变色,后来为了实现关键字变色的这个难题,我上网找了很久,就找到了一个人用java实现了,他使用的是JTextPane并非我们在网上常见的jTextArea,后来查阅了很多资料后才得知jTextArea是什么没有实现关键字变色的(在JtextArea中没有办法实现一部分字体以特殊的颜色显示出来),后来我就采用了JTextPane。就在我采用了J
11、TextPane继续往下写的时候遇到了困难第一个困难是我JTextPane没有提供像JTextArea中获取行号和列号的对应函数。为了显示行号与列号,我又上网查资料,自己写了getRow()和getColumn()函数来返回当前光标对应的行数和列数。我的这个小程序在对文字的处理方面可能很不如很多的网上可以搜索到的文本编辑器,因为代码是我一个人写的,在加上期末考试的临近,时间越来越紧张,在加网上对JTextPane的资料少于JTextArea的,所以在这个地方我做的不是很好。为了实现主要的功能我放弃了对一些常规的记事本的替换等操作。我想了一下如果一个代码编辑器不能编辑那怎么能叫代码编辑器,后来我想到可以利用本机的JDK来做一个假的编译器,上面有编译和运行的按钮,但在实现是利用用户自己的本机安装JDK来编译源代码。由于我个人的水平有限和时间有限,代码中肯定会有一些bug。我会在后来的时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西南交通大学《设计与美术专题研讨》2021-2022学年第一学期期末试卷
- 西华大学《图形创意》2021-2022学年第一学期期末试卷
- DB32-T 4622.1-2023 采供血过程风险管理 第1部分:原则与实施指南
- 西北大学《构成基础》2021-2022学年第一学期期末试卷
- 《不良事件报告修改》课件
- 再生钨行业竞争格局分析:进出口贸易、行业现状、前景研究报告(智研咨询发布)
- 医院感染暴发识别与处置考核试题
- 电商设计电子课件
- 【课件】培训体系的制度和实施
- 2024-2025学年上海市青浦区高三一模生物试卷(含答案)
- 无机材料与功能化学
- 110kV变电站及110kV输电线路运维投标技术方案(第一部分)
- 消防设施安全检查表
- 餐厅用电安全承诺书
- 家庭教育指导能力提升研究课题
- 小学六年级数学上册应用题100道(全)-及答案
- 学生辍学劝返记录表
- 2022-2023学年湖南省衡阳市常宁市胜桥中学高一物理上学期期末试卷含解析
- 2022年河北省普通高中学业水平合格性考试语文试题(解析版)
- 江苏省苏州市-七年级(上)期中英语试卷-(含答案)
- 国家职业技术技能标准 6-02-06-03 白酒酿造工 人社厅发2019107号
评论
0/150
提交评论