java在线代码编辑器网页版java在线编译运行编辑器

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

}

publicvoidinsertUpdate(DocumentEvente){

try{

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

}catch(BadLocationExceptione1){

e1.printStackTrace();

publicvoidremoveUpdate(DocumentEvente){

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

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

五.着色范围:

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{

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

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

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后面的位置

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

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

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

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

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

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

*@paramdoc

*@parampos

*@return

*@throwsBadLocationException

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

*取得在文档中下标在pos处的字符.

*如果pos为doc.getLength(),返回的是一个文档的结束符,不会抛出异常.如果pos0,则会抛出异常.

*所以pos的有效值是[0,doc.getLength()]

publicchargetCharAt(Documentdoc,intpos)throwsBadLocationException{

returndoc.getText(pos,1).charAt(0);

*取得下标为pos时,它所在的单词开始的下标.±wor^d±(^表示pos,±表示开始或结束的下标)

*取得下标为pos时,它所在的单词结束的下标.±wor^d±(^表示pos,±表示开始或结束的下标)

*如果一个字符是字母,数字,下划线,则返回true.

charch=getCharAt(doc,pos);

*完成着色任务

一、EditplusEditPlus是功能很全面的文本、HTML、程序源代码编辑器。

默认的支持HTML、ASP、Perl、C/C++、CSS、PHP、Java、java和VB的语法着色。

通过定制语法文件还可以扩展到其他程序语言。

可以在Tools菜单的ConfigureUserTools菜单项配置用户工具,类似于UltraEdit的配置,配置好Java的编译器Javac和解释器Java后,通过EditPlus的菜单可以直接编译执行Java程序。

二、UltraEdit初学者一般用什么开发工具UltraEdit是一个功能强大的文本、HTML、程序源代码编辑器。

作为源代码编辑器,它的默认配置可以对C/C++,VB,HTML,Java和Perl进行语法着色。

用它设计Java程序时,可以对Java的关键词进行识别并着色,方便了Java程序设计。

它具有完备的复制、粘贴、剪切、查找、替换、格式控制等编辑功能。

可以在Advanced菜单的ToolConfiguration菜单项配置好Java的编译器Javac和解释器Java,直接编译运行Java程序。

三、Eclipse初学者一般用什么开发工具Eclipse是一个开放可扩展的集成开发环境(IDE)。

它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。

Eclipse是开放源代码的项目,并可以免费下载。

建议使用Releases或StableBuilds版本。

四、JcreatorJcreator是一个用于Java程序设计的集成开发环境,具有编辑、调试、运行Java程序的功能。

这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。

java课程认为具有语法着色、代码参数提示、工程向导、代码自动完成、类向导等功能。

先进次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。

但目前这个版本对中文支持性不好。

1、SublimeText

SublimeText是一个代码编辑器也是HTML和散文先进的文本编辑器。漂亮的用户界面和非凡的功能,例如迷你地图,多选择,Python的插件,代码段,等等。完全可自定义键绑定,菜单和工具栏。SublimeText的主要功能包括:拼写检查,书签,完整的PythonAPI,Goto功能,即时项目切换,多选择,多窗口等等。

2、Dreamweaver

AdobeDreamweaver使用所见即所得的接口,亦有HTML(标准通用标记语言下的一个应用)编辑的功能,借助经过简化的智能编码引擎,轻松地创建、编码和管理动态网站。访问代码提示,即可快速了解HTML、CSS和其他Web标准。使用视觉辅助功能减少错误并提高网站开发速度。

3、VisualStudioCode

VisualStudioCode中文版是微软推出的带GUI的代码编辑器,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。软件主要改进了文档视图,完善了对Markdown的支持,新增PHP语法高亮。

4、HBuilder

HBuilder是专为前端打造的开发工具,具有飞一样的编码、最全的语法库和浏览器兼容数据、可以方便的制作手机APP、最保护眼睛的绿柔设计等特点。支持HTML、CSS、JS、PHP的快速开发。从开放注册以来深受广大前端朋友们的喜爱。

5、WebStorm

WebStorm是jetbrains公司旗下一款JavaScript开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScriptIDE”等。与IntelliJIDEA同源,继承了IntelliJIDEA强大的JS部分的功能。

1、Eclipse-IBM甩出来给开源社区的IDE,其本身就是使用Java开发的。\x0d\x0a2、MyEclipse-把Eclipse包装了一下,加了J2EE企业开发的许多功能强大的插件。\x0d\x0a3、NetBeans-SUN公司自己开发的Java开发环境,功能挺多的。\x0d\x0a4、还有一些超喜欢手工编写Java代码的牛人喜欢使用带语法着色功能的纯文本编辑器编写Java程序,代码写完后在命令提示符下编译运行。这种方式只适用写少量代码或作为学习使用,开发大型项目不适用,因为效率很低。

1.CodeSandbox(基于React的在线代码沙盒平台)我常用的

②地址:

③图示

2.CodePen(前端代码编辑运行的网站)

①CodePen是一个完全免费的前端代码托管服务,主要功能有:

3.JSRUN(支持手机端的在线JS编辑器)

①jsrun是一款支持手机端的在线JS编辑器,HTML/CSS/Javascript在线代码运行工具,js代码在线测试调试,是runjs的升级版支持vue.js/angular.js的在线编辑器

4.jsFiddle(前端代码编辑运行的网站)

5.Ideone(C和C++的在线编译和调试工具,支持其他的60种语言)我常用

①Ideone是C和C++的在线编译和调试工具,支持其他的60种语言。这个工具提供许多强大的功能,允许程序员快速高效的编译源代码

6.Codechef(C,C++和Java的在线编译工具)

①它支持C,C++和Java,非常接近真正的桌面IDE。这是超快速和易于使用。适合于课堂和作业的学生,练习面试问题。

7.JDoodle(C,C++和Java的在线IDE)

①支持协作代码。它只是从一个简单的文本区域开始,您可以粘贴代码,然后单击运行。您可以更改命令行参数并在运行该程序之前设置stdin。最适合新的在线编辑器不支持的许多旧语言。

8.OnlineGDB(在线C,C++,Java,PHP编译器)我常用

①它支持C,C++,PHP和Java编译器。OnlineGDB的独特功能是,您可以逐步调试您的代码。一旦代码被写入,它可以很容易地格式化,使其看起来不错。

9.GCC资源管理器

①GCC编译器资源管理器是一个交互式在线编译器,它显示编译后的C++、RISE、GO(以及更多)代码的汇编输出。

THE END
1.MicrosoftC/C++DocumentationMicrosoftLearnLearn how to use C++ to develop applications, services, and tools for your platforms and devices.https://docs.microsoft.com/lb-lu/cpp/
2.c++编译器下载c++编译器v10.2.5最新版电脑免费中文下载c++编译器采用先进的编译技术,显著提升C++代码编译速度,缩短开发周期,内置智能优化算法,自动分析代码结构,优化执行效率,减少资源消耗。支持多种操作系统平台,包括Windows、Linux、macOS等,确保代码无缝迁移。 软件特色 强大调试功能 集成先进的调试工具,支持断点、单步执行、变量监视等,助力快速定位问题。 代码分析与重构 提https://patch.ali213.net/showpatch/255635.html
3.C++高效编程网页版网页版c++,c++网页版资源这是C++高效内存管理的核心理念。 8. **性能优化**:了解如何利用编译器优化选项、手动内存管理、算法优化以及多线程并行计算等方法,可以进一步提升C++程序的执行速度。 9. **C++11及更高版本的新特性**:从C++11开始,语言引入了许多新特性,如右值引用、lambda表达式、自动类型推断(auto关键字)、并发编程工具等,https://download.csdn.net/download/lunha/4188425
4.c语言网页版在线编译器怎么用,怎样在平板上用c语言编程用编译器(一般编程程序自带)编译c语言文件编译完就可运行! 2,c 编译器怎么用 在右上角有按钮的,我用手机,也不知怎么描述,这样吧,你下中文版的,然后放鼠标到图标上,会提示的 visual c++6.0兼容c语言的! 简易c语言开发工具!打开就能编了,不用建什么文件的! 这些网上很容易找到的 谢谢请采纳! http://www.lisdn.com/mnsj/hhzs/505137.html
5.如何利用C++实现一个简单的网页爬虫程序?C++如何利用C++实现一个简单的网页爬虫程序? 简介:互联网是一个信息的宝库,而通过网页爬虫程序可以轻松地从互联网上获取大量有用的数据。本文将介绍如何使用C++编写一个简单的网页爬虫程序,以及一些常用的技巧和注意事项。 一、准备工作 安装C++编译器:首先需要在计算机上安装一个C++编译器,例如gcc或者clang。可以通过命令https://m.php.cn/faq/625768.html
6.程序员专用十大在线编译器(IDE)整理① GCC编译器资源管理器是一个交互式在线编译器,它显示编译后的C++、RISE、GO(以及更多)代码的汇编输出。 ② 地址:https://gcc.godbolt.org/ ③ 图示 编辑界面 (图 9-1) 10. plnkr edit在线编辑器 ① js的在线编辑器。 ② 地址:http://plnkr.co/edit/ https://www.51cto.com/article/600631.html
7.简单上手python爬虫-1:python or c++ 0:前置知识:关于python 1:第一个任务--下载网页 2:下载一张图片吧 3:第二个任务--有道翻译 3.0:服务器是怎么处理我们的发送的请求的? 3.1:前置芝士:URL的组成 3.2:使用有道翻译 4:关于编码的那些事 4.1:ASCII,utf-8,GB2312,unicode,ANSI有什么区别? https://www.luogu.com.cn/article/wubltxkl
8.快对作业网页版在线下载C++编译器 大小:60.33MB 版本:11.1.1 C语言编译器 大小:71.38MB 版本:11.1.1 逻辑电路模拟器 大小:26.96MB 版本:36.0.0 大学搜题酱 大小:46.60MB 版本:2.24.0 课程表达人 大小:8.45MB 版本:6.0 相关攻略 更多+ 《今日头条》解除锁定方法 《快对作业》取消收藏书单方法 《快对作业》下载答案储存路https://shouyou.3dmgame.com/android/237474.html
9.hth网页版在线登录入口官方版(2024APP)【下载次数74425】支持:winall/win7/win10/win11现在下载,新用户还送新人礼包hth网页版在线登录入口是一款经典好用的跨渠道编译器,具有才能强、经验丰富的开发团队,并且内嵌C++,C structur,支撑JSON, SSL, TCP多种现代规范,一起经过该软件,你能构建运行在GNU/Linux、Windowshttp://m.share.www.hzkzjk.com/mPa/detail/jqDmxi.html
10.asp.net技术faqasp.net基础开始Microsoft 将提供 C#、C++、VB 和 JScript 编译器。其它供应商宣布他们有意开发像 COBOL、Eiffel、Perl、Smalltalk 和 Python 等语言的 .NET 编译器。 1.11 .NET 框架符合标准化趋势吗? C# 以及称为“通用语言基础结构”的一些东西的推荐标准草案已经提交给了 ECMA。参见http://msdn.microsoft.com/net/ecma/https://www.west.cn/www/info/50613-1.htm
11.C++使用HttpRequest获取网页及UTF8转GB码旭东的博客 | C++ win C/C++程序通过Get方式获取网页源代码 [转自]http://www.cnblogs.com/coderzh/archive/2008/11/24/1340134.html 1 #include 2 #include 3 #include 4 5 #define MAXSIZE 1024 6 #pragma comment(lib, "Wininet. 913 0 0 ephemerals__ | 8天前 | 存储 编译器 C语言 【https://developer.aliyun.com/article/1218387
12.推荐一款强大的在线编译器几款优秀的支持C、C++等多种语言的在线编译器 https://www.onlinegdb.com(公号不支持外链接,请复制链接到浏览器打开) 最后,这些在线编译器对于一些初学者(不懂各种配置),或者想测试本地没有的编译环境都是非常有用的,大家有: 如果代码有错误,在线编译,也会提示: 总的来说,这款在线编译器的功能挺多,也https://www.pianshen.com/article/795354268/
13.IBM编译器开发团队的微博最新的 IBM XL C/C++ 编译器 V13.1.5 与 Fortran 编译器 V15.1.5 已经在今天正式发布啦!而且这次更新的社区版的 C/C++ 与 Fortran 编译器具有与商业版本一样的功能,如最高的优化级别 -O5,OpenMP 4.5 等等详见:O网页链接 欢迎大家去免费下载并使用性能卓越的XL编译器! 展开全文chttps://www.weibo.com/ibmcompiler
14.c语言网页版在线编译器c语言网页版在线运行c编译器-c语言的编译器是干什么用的本人不才,仅就个人意见谈谈: 1。c语言编译器哪个好?g++,icc. 小问题二:在类中对友元函数和重载的支持不是很好,虽然打了补丁,还是有点问题,最经典的一次就是我写了一个类的https://cloud.tencent.com/developer/information/c%E8%AF%AD%E8%A8%80%E7%BD%91%E9%A1%B5%E7%89%88%E5%9C%A8%E7%BA%BF%E7%BC%96%E8%AF%91%E5%99%A8
15.SNL编译器(网页版)汇编原理编译器6.0版 这是一个6.0版本的汇编语言的编译器,大家尽情的享用吧 上传者:yuzhoufeng888时间:2008-11-28 SNL语言编译器C++实现 从词法分析到目标代码生成 各个部分都有。 上传者:hhf1029时间:2012-05-02 SNL编译器java实现 学校SNL语言的编译器java实现,包括词法分析,语法分析,语义分析。有程序界面,非https://www.iteye.com/resource/lisc741-5603013
16.GCC在线编译器的使用教程是什么问答GCC是一种广泛使用的开源编译器,可以用于编译C、C++等编程语言。GCC在线编译器是指可以通过网页访问并使用GCC编译器的服务。以下是使用GCC在线编译器的一般步骤:1. 打开GCC在线编译器的https://www.yisu.com/ask/61671196.html
17.关于编程的一些术语及解释编译器(compiler) —种程序,将更强大、更流行的语言(高级语言)写的程序翻译成计算机硬件能够理解的命令(机器语言)。参见“解释器”(interpreter)。 ? 复杂性(complexity) 算法的“时间复杂性”(time complexity)指的是,当输入的数据量不断增加时,计算机完成这种算法所消耗的时间。比如,假定你要https://www.guhei.net/post/jb606