问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用java开发代码编辑器(使用java开发代码编辑器的好处)

发布网友 发布时间:2024-09-26 06:38

我来回答

1个回答

热心网友 时间:2024-12-05 07:39

java编程常用的软件有哪些

想要做好Java开发,没有常用的开发工具可不行。而Java初学者往往处于对Java还一知半解的状态,对于Java开发工具的了解也不会太多,常常会为了找开发工具而浪费大量的时间。给大家介绍下Java开发工程师常用的开发工具有哪些。

第一个Java常用的开发工具为JDK,也叫Java软件开发工具包,是一个编写Java的Applet小程序和应用程序的程序开发环境,JDK中还包括了Java的开发环境,所以下载了JDK就包含了Java开发环境。而且JDK之所以被叫做Java软件开发工具包,是因为它包含了其它Java开发工具,如:编译工具(javac.exe)、打包工具(jar.exe)等。

第二个是JavaIDE:Eclipse,Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。而且由于它的平等和一致性,使得其它开发语言也可以在eclipse上使用。

第三个是notepad++,notepad++是一个编译工具,它的优点是即使你把文件删掉了,如果再notepad++中打开过,那么那里就会保留,所以对一些容易误删的人来说比较友好,notepad++可以用来替代notepad。

第四个是VisualStudioCode,它是一个运行于MacOSX、Windows和Linux之上的跨平台源代码编辑器。而且这个编辑器支持多种语言和格式的编写。

以上就是比较常用的4种Java开发工具,Java的初学者在对开发工具不了解的情况下,可以根据上述介绍来选择适合自己的开发工具,这样可以减少自己到处找开发工具还可能找到不适合的所浪费的时间。

如何用java编写一个简单的文本编辑器?

importjava.awt.*;\x0d\x0aimportjava.awt.event.*;\x0d\x0aimportjavax.swing.*;\x0d\x0aimportjava.io.*;\x0d\x0a\x0d\x0apublicclassf1extendsFrameimplementsActionListener\x0d\x0a{\x0d\x0aprivateMenuBarmenubar=newMenuBar();\x0d\x0aprivateMenufilemenu=newMenu("文件");\x0d\x0aprivateMenueditmenu=newMenu("编辑");\x0d\x0aprivateMenuformmenu=newMenu("格式");\x0d\x0aprivateMenuItem[]itemf=newMenuItem[4];\x0d\x0aprivateMenuItem[]iteme=newMenuItem[6];\x0d\x0aprivateMenuItem[]items=newMenuItem[2];\x0d\x0aprivateTextAreatf=newTextArea();\x0d\x0a\x0d\x0apublicinta=0,b=0,c=0,style=Font.PLAIN,size=15;\x0d\x0apublicStrings1="red:"+a+""+"green:"+b+""+"blue"+c,\x0d\x0as2="宋体";\x0d\x0a\x0d\x0apublicString[]sz1={"10","16","24","30","32","36"},\x0d\x0asz2={"宋体","黑体","幼圆","隶书","行楷","Arial","Georgia"},\x0d\x0asz3={"粗体","倾斜","常规","粗斜"};\x0d\x0a\x0d\x0aJDialogdialog=newJDialog(this,"字体",true);\x0d\x0aContainercp=dialog.getContentPane();\x0d\x0aJLabel[]lb=newJLabel[8];\x0d\x0aJLabellb1=newJLabel(s1,JLabel.LEFT);\x0d\x0aJButtonb1=newJButton("确定"),\x0d\x0ab2=newJButton("取消");\x0d\x0aJComboBoxjc1=newJComboBox(),\x0d\x0ajc2=newJComboBox(),\x0d\x0ajc3=newJComboBox();\x0d\x0aJScrollBarjb1=newJScrollBar(JScrollBar.HORIZONTAL,10,5,0,260);\x0d\x0aJScrollBarjb2=newJScrollBar(JScrollBar.HORIZONTAL,10,5,0,260);\x0d\x0aJScrollBarjb3=newJScrollBar(JScrollBar.HORIZONTAL,10,5,0,260);

java源代码编辑器设计用于编写Java源代码的编辑器,基本要求:可以完成源程序的文件打开,编辑和文件保存

一.高亮的内容:

需要高亮的内容有:

1.关键字,如public,int,true等.

2.运算符,如+,-,*,/等

3.数字

4.高亮字符串,如"exampleofstring"

5.高亮单行注释

6.高亮多行注释

二.实现高亮的核心方法:

StyledDocument.setCharacterAttributes(intoffset,intlength,AttributeSets,booleanreplace)

三.文本编辑器选择.

Java中提供的多行文本编辑器有:JTextComponent,JTextArea,JTextPane,JEditorPane等,都可以使用.但是因为语法着色中文本要使用多种风格的样式,所以这些文本编辑器的document要使用StyledDocument.

JTextArea使用的是PlainDocument,此document不能进行多种格式的着色.

JTextPane,JEditorPane使用的是StyledDocument,默认就可以使用.

为了实现语法着色,可以继承自DefaultStyledDocument,设置其为这些文本编辑器的documet,或者也可以直接使用JTextPane,JEditorPane来做.为了方便,这里就直接使用JTextPane了.

四.何时进行着色.

当文本编辑器中有字符被插入或者删除时,文本的内容就发生了变化,这时检查,进行着色.

为了监视到文本的内容发生了变化,要给document添加一个DocumentListener*,在他的removeUpdate和insertUpdate中进行着色处理.

而changedUpdate方法在文本的属性例如前景色,背景色,字体等风格改变时才会被调用.

@Override

publicvoidchangedUpdate(DocumentEvente){

}

@Override

publicvoidinsertUpdate(DocumentEvente){

try{

colouring((StyledDocument)e.getDocument(),e.getOffset(),e.getLength());

}catch(BadLocationExceptione1){

e1.printStackTrace();

}

}

@Override

publicvoidremoveUpdate(DocumentEvente){

try{

//因为删除后光标紧接着影响的单词两边,所以长度就不需要了

colouring((StyledDocument)e.getDocument(),e.getOffset(),0);

}catch(BadLocationExceptione1){

e1.printStackTrace();

}

}

五.着色范围:

pos:指变化前光标的位置.

len:指变化的字符数.

例如有关键字public,int

单词"publicint",在"public"和"int"中插入一个空格后变成"publicint",一个单词变成了两个,这时对"public"和"int"进行着色.

着色范围是public中p的位置和int中t的位置加1,即是pos前面单词开始的下标和pos+len开始单词结束的下标.所以上例中要着色的范围是"publicint".

提供了方法indexOfWordStart来取得pos前单词开始的下标,方法indexOfWordEnd来取得pos后单词结束的下标.

publicintindexOfWordStart(Documentdoc,intpos)throwsBadLocationException{

//从pos开始向前找到第一个非单词字符.

for(;pos0isWordCharacter(doc,pos-1);--pos);

returnpos;

}

publicintindexOfWordEnd(Documentdoc,intpos)throwsBadLocationException{

//从pos开始向前找到第一个非单词字符.

for(;isWordCharacter(doc,pos);++pos);

returnpos;

}

一个字符是单词的有效字符:是字母,数字,下划线.

publicbooleanisWordCharacter(Documentdoc,intpos)throwsBadLocationException{

charch=getCharAt(doc,pos);//取得在文档中pos位置处的字符

if(Character.isLetter(ch)||Character.isDigit(ch)||ch=='_'){returntrue;}

returnfalse;

}

所以着色的范围是[start,end]:

intstart=indexOfWordStart(doc,pos);

intend=indexOfWordEnd(doc,pos+len);

六.关键字着色.

从着色范围的开始下标起进行判断,如果是以字母开或者下划线开头,则说明是单词,那么先取得这个单词,如果这个单词是关键字,就进行关键字着色,如果不是,就进行普通的着色.着色完这个单词后,继续后面的着色处理.已经着色过的字符,就不再进行着色了.

publicvoidcolouring(StyledDocumentdoc,intpos,intlen)throwsBadLocationException{

//取得插入或者删除后影响到的单词.

//例如"public"在b后插入一个空格,就变成了:"public",这时就有两个单词要处理:"pub"和"lic"

//这时要取得的范围是pub中p前面的位置和lic中c后面的位置

intstart=indexOfWordStart(doc,pos);

intend=indexOfWordEnd(doc,pos+len);

charch;

while(startend){

ch=getCharAt(doc,start);

if(Character.isLetter(ch)||ch=='_'){

//如果是以字母或者下划线开头,说明是单词

//pos为处理后的最后一个下标

start=colouringWord(doc,start);

}else{

//SwingUtilities.invokeLater(newColouringTask(doc,pos,wordEnd-pos,normalStyle));

++start;

}

}

}

publicintcolouringWord(StyledDocumentdoc,intpos)throwsBadLocationException{

intwordEnd=indexOfWordEnd(doc,pos);

Stringword=doc.getText(pos,wordEnd-pos);//要进行着色的单词

if(keywords.contains(word)){

//如果是关键字,就进行关键字的着色,否则使用普通的着色.

//这里有一点要注意,在insertUpdate和removeUpdate的方法调用的过程中,不能修改doc的属性.

//但我们又要达到能够修改doc的属性,所以把此任务放到这个方法的外面去执行.

//实现这一目的,可以使用新线程,但放到swing的事件队列里去处理更轻便一点.

SwingUtilities.invokeLater(newColouringTask(doc,pos,wordEnd-pos,keywordStyle));

}else{

SwingUtilities.invokeLater(newColouringTask(doc,pos,wordEnd-pos,normalStyle));

}

returnwordEnd;

}

因为在insertUpdate和removeUpdate方法中不能修改document的属性,所以着色的任务放到这两个方法外面,所以使用了SwingUtilities.invokeLater来实现.

privateclassColouringTaskimplementsRunnable{

privateStyledDocumentdoc;

privateStylestyle;

privateintpos;

privateintlen;

publicColouringTask(StyledDocumentdoc,intpos,intlen,Stylestyle){

this.doc=doc;

this.pos=pos;

this.len=len;

this.style=style;

}

publicvoidrun(){

try{

//这里就是对字符进行着色

doc.setCharacterAttributes(pos,len,style,true);

}catch(Exceptione){}

}

}

七:源码

关键字着色的完成代码如下,可以直接编译运行.对于数字,运算符,字符串等的着色处理在以后的教程中会继续进行详解.

importjava.awt.Color;

importjava.util.HashSet;

importjava.util.Set;

importjavax.swing.JFrame;

importjavax.swing.JTextPane;

importjavax.swing.SwingUtilities;

importjavax.swing.event.DocumentEvent;

importjavax.swing.event.DocumentListener;

importjavax.swing.text.BadLocationException;

importjavax.swing.text.Document;

importjavax.swing.text.Style;

importjavax.swing.text.StyleConstants;

importjavax.swing.text.StyledDocument;

publicclassHighlightKeywordsDemo{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame();

JTextPaneeditor=newJTextPane();

editor.getDocument().addDocumentListener(newSyntaxHighlighter(editor));

frame.getContentPane().add(editor);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(500,500);

frame.setVisible(true);

}

}

/**

*当文本输入区的有字符插入或者删除时,进行高亮.

*

*要进行语法高亮,文本输入组件的document要是styleddocument才行.所以不要用JTextArea.可以使用JTextPane.

*

*@authorBiao

*

*/

classSyntaxHighlighterimplementsDocumentListener{

privateSetStringkeywords;

privateStylekeywordStyle;

privateStylenormalStyle;

publicSyntaxHighlighter(JTextPaneeditor){

//准备着色使用的样式

keywordStyle=((StyledDocument)editor.getDocument()).addStyle("Keyword_Style",null);

normalStyle=((StyledDocument)editor.getDocument()).addStyle("Keyword_Style",null);

StyleConstants.setForeground(keywordStyle,Color.RED);

StyleConstants.setForeground(normalStyle,Color.BLACK);

//准备关键字

keywords=newHashSetString();

keywords.add("public");

keywords.add("protected");

keywords.add("private");

keywords.add("_int9");

keywords.add("float");

keywords.add("double");

}

publicvoidcolouring(StyledDocumentdoc,intpos,intlen)throwsBadLocationException{

//取得插入或者删除后影响到的单词.

//例如"public"在b后插入一个空格,就变成了:"public",这时就有两个单词要处理:"pub"和"lic"

//这时要取得的范围是pub中p前面的位置和lic中c后面的位置

intstart=indexOfWordStart(doc,pos);

intend=indexOfWordEnd(doc,pos+len);

charch;

while(startend){

ch=getCharAt(doc,start);

if(Character.isLetter(ch)||ch=='_'){

//如果是以字母或者下划线开头,说明是单词

//pos为处理后的最后一个下标

start=colouringWord(doc,start);

}else{

SwingUtilities.invokeLater(newColouringTask(doc,start,1,normalStyle));

++start;

}

}

}

/**

*对单词进行着色,并返回单词结束的下标.

*

*@paramdoc

*@parampos

*@return

*@throwsBadLocationException

*/

publicintcolouringWord(StyledDocumentdoc,intpos)throwsBadLocationException{

intwordEnd=indexOfWordEnd(doc,pos);

Stringword=doc.getText(pos,wordEnd-pos);

if(keywords.contains(word)){

//如果是关键字,就进行关键字的着色,否则使用普通的着色.

//这里有一点要注意,在insertUpdate和removeUpdate的方法调用的过程中,不能修改doc的属性.

//但我们又要达到能够修改doc的属性,所以把此任务放到这个方法的外面去执行.

//实现这一目的,可以使用新线程,但放到swing的事件队列里去处理更轻便一点.

SwingUtilities.invokeLater(newColouringTask(doc,pos,wordEnd-pos,keywordStyle));

}else{

SwingUtilities.invokeLater(newColouringTask(doc,pos,wordEnd-pos,normalStyle));

}

returnwordEnd;

}

/**

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在RLC电路中,谐振频率为___同期为___谐振条件为___? 电磁振荡并联 RLC振荡回路的谐振频率与振荡特性 佛手柑水培还是干放 中山市美派电器有限公司怎么样? 成都美派电器有限公司怎么样? 两条不同品牌的DDR3内存条可以一起用吗 驾驶证的牡丹卡多长时间能办下来 新衣服必须用洗衣液洗才能去甲醛吗? 梦见逛街被偷抢 2024年买什么品牌的运动男鞋比较好? 我租了个六十平米的店面二千一个月,人不是很多不过还可以,办不了烟草证... 六十平米的房子,开麻辣烫得花多少钱 开一个60平米左右大小的酒吧大概要多少启动资金 60平米二楼办公楼商铺适合做什么 用较多3.7伏强光电池怎样的才能让其达到12伏和60安 飞利浦正品充电宝三万的有吗 世界上最大的中文搜索引擎 蚊子是怎么活动的呢? 梦见商场装修有什么预兆扩展问答 为什么通过多行式加强社会主义核心价值观值 止水为什么要一直开着写轮眼? 他的右眼被团藏夺走了为什么不用左眼对富... ...先得到止水的眼睛,后止水自杀死的时候剩一只眼睛,还把眼睛给了鼬... 苹果音量键回弹无力怎么办保修吗 手机音量按键没弹性什么原因 - 知百科 平坝金樽怎么样 自行车小型打气筒怎么用 自行车打气筒的正确用法 梦见表姐晚上开白色轿车回家的预兆 ...班有22人做游戏,3个人一组,至少再来几个人才能正好分完?_百度... ...每3人分为一组,至少再来几个人才能正好分完?(3的倍数的特征)_百度... 怎么给Java web 自定义的文本编辑器添加表情?FCKConfig.SmileyPath... AMD A6-4400M 的CPU能不能换成英特尔i5的CPU? DELL的笔记本 机型5425 求... 刺激战场买衣服的方法 二战时期美军如何威胁日军的海上运输线? 既然潜艇防御海岛能让航母无法靠近海岛空袭,二战日本为什么不用潜艇防御... 二战霓虹反潜水平怎么样 中国四项引领未来的超级工程 2020款新轩逸有手机投屏功能吗? 月食是怎么回事 古人是怎么看待月食现象的 1518姓名打分路鑫侧这个名好吗 ...字分开,用一句话含义“青争”两个字,向高手大师求解 有蓄叁佰度电的电瓶吗? 电瓶240V是什么意思 220v电瓶充电器电压不能超多少? 普联wr8886n千兆版好用不? 需要定期给猫咪清理耳朵吗,猫咪耳朵怎么清理? 猫咪耳朵很脏怎么处理 猫耳朵需要定期清理吗 耳螨能自愈吗 应该多久清理一次猫咪的耳朵? 猫咪耳朵多久洗一次