- 浏览: 242506 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
Araxis:
也遇到了楼主的问题,我用的sockjs.0.3.4,升级版本到 ...
Websocket出现的错误 -
love_jun1314:
怎么进行转换成功并没有看到a.flv文件呢? 你把commen ...
java调用ffmpeg执行视频转换 -
枫林top:
不错,挺好的
看老外程序员如何向妻子解释设计模式 -
likj_sh:
太感谢了 ,困惑了好久
Struts2 + Spring + Hibernate + DWR 项目布署笔记 -
dhl004:
...
web.xml 通过contextConfigLocation配置spring 的方式
本文主要记录怎么给代码编辑器实际语法高亮显示的功能,先来张效果图吧: 这个方法默认是返回一个PlainEditorKit对象,也就是一个纯文本的编辑器工具包,所以JEditorPane默认并没有格式化与彩色显示等功 能,看来我们先要定制一个支持彩色显示的EditorKit,然后把它作为createDefaultEditorKit()的返回值。 接下来就是覆盖StyledEditorKit中的相关方法了,其实有很多方法都可以覆盖,但是意义不是很大,比如 这个方法是获得此工具包声明支持的数据的 MIME 类型,默认是text/plain,也就是文本文档,Java文件说白了也是文本文档,不过可以让它返回 text/java 以唯一标识编辑器所支持的MIME类型。 EditorKit中有两个重要的方法实现对文档的管理与显示: 创建一个适合此编辑器类型文本存储模型。EditorKit把对文本文档的管理功能交给了这个方法的返回值。 获取适合生成此工具包生成的任何模型视图的工厂。EditorKit把编辑器的显示功能交给了这个方法的返回值,比如什么字符显示成什么样子,什么颜色等。我们必须覆盖这两个方法以实现自定义编辑器的功能。 因为我们的编辑器和JEditorPane唯一不同的可能就是代码怎么来显示,所以createDefaultDocument()可以返回一个默 认的javax.swing.text.DefaultStyledDocument 就行,对于getViewFactory,我们需要定制一个ViewFactory视图来实现编辑器独有的各种显示功能。 ViewFactory在Java中被定义为一个接口,里面提供了唯一的一个方法: 这个方法根据给定的文档的结构化元素创建一个视图。在这个方法中,我们只需要返回一个继承自View的视图即可,真正的显示任务是交给这个视图的。因此,我们的ViewFactory类很简单: 接下来的重点就是这个JavaEditorView了,所有的语法高亮等显示功能都是交给它来完成的 View是一个抽象类,Swing默认给我们提供了多个它的子类,AsyncBoxView, ComponentView, CompositeView, GlyphView, IconView, ImageView, PlainView 以实现对不同文档类型的显示,当中只有PlainView是与文本文档相关的,它实现简单的多行文本视图的 View 接口,该文本视图的文本只有一种字体和颜色,没错,我们的JavaEditorView需要继承自PlainView。(http://www.my400800.cn ) PlainView提供了很多方法进行文本文档的视图显示,要实现高亮显示,我们关心的有两个方法: 一看名字就知道这个方法是控制选中状态下的显示方式,由于本文只讨论非选中状态。所以重点看一下另外一个方法: 这个方法将模型中给定的范围呈现为正常的未选定文本。使用前景色或指定的颜色显示文本。 参数: 下面是覆盖后的实现: 先是得到从起始位置到结束位置的长度,然后再交由scanParagraph去处理指定长度的文本,其实也就是怎么把它画出来。 private int scanParagraph(Graphics g, int x, int y, int startOffset, int length) throws BadLocationException
当JEditorPane被创建时,它会把createDefaultEditorKit()方法(javax.swing.text.EditorKit的子类对象)的返回值作为默认的编辑器工具包,然后将文本的编辑与显示工作交给这个工具包。其原型为:
EditorKit 基本上什么也没有做,只是提供了很多抽象方法给它的子类去实现,Swing默认已经给它添加了一个子类DefaultEditorKit(Swing常用 的一招,就是给抽象类前面加个Default进行最基本的实现),既然是Default,那它所提供的功能肯定和一个记事本没有多大区别,这要是继承下 来,有多少方法需要覆盖啊,别慌,查看一下Swing的源码,你会发现Swing还提供了一个继承自DefaultEditorKit的类 StyledEditorKit,顾名思义,这个类肯定为我们提供了很多支持格式化显示的方法,又是一个巨人,快,赶紧拉过来往肩上爬。
g - 图形上下文(做Swing的人再熟悉不过了,文本也是画出来的)
x - 起始 X 坐标,该值 >= 0
y - 起始 Y 坐标,该值 >= 0
p0 - 模型中的起始位置,该值 >= 0
p1 - 模型中的结束位置,该值 >= 0
对于一个Java代码编辑器,要考虑类名,运算符,数字,关键字等的显示方式,所以scanParagraph要做的事情很多,本文只以怎么么高亮显示类名为例来说明:
{
Segment seg = new Segment();
//得到编辑器组件
JavaCodeEditor editor = (JavaCodeEditor) getContainer();
//得到startOffset,位置开始的length个长度的字符串,其实也就是我们要处理的字符串
getDocument().getText(startOffset, length, seg);
for (int wordIndex = 0; wordIndex < seg.length();)
{
char currentChar = seg.charAt(wordIndex);
if (Character.isJavaIdentifierStart(currentChar))
{
//下面我默认用Object说明,实际中要处理seg中的内容。
String identifier = "Object";
int len = identifier.length();
//比如说以红色显示类名
Segment text = getLineBuffer();
getDocument().getText(startOffset + wordIndex, len, text);
//还有其它样式的话只管给g加
g.setColor(color);
Utilities.drawTabbedText(text, x, y, g, this, startOffset + wordIndex);
//下面的代码略
.
}
}
//下面的代码略
.
}
发表评论
-
掌握Tiles 框架---Tiles入门和Tiles 框架和体系结构
2016-01-05 19:25 792入门 本教程所讲述的 ... -
GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)
2015-10-26 17:34 1175WGS-84:是国际标准,GPS坐标(Google Eart ... -
JSR-356 WebSocket API规范中文版
2014-10-21 17:21 901转:http://jinnianshilongnian.it ... -
EL表达式大全
2014-10-10 14:29 6581.uri="http://java.sun.c ... -
Spring4.0实用教程-4.x初体验
2014-06-10 13:37 1087一、环境准备 1、配置Spring Maven仓库。 发 ... -
看老外程序员如何向妻子解释设计模式
2013-05-16 10:58 809设计模式是什么? 设计模式是这些原则在某些特定 ... -
Windows下Github使用方法
2013-01-31 10:35 958Windows下Github使用方法 ... -
一些常用的HTTP头
2013-01-23 18:08 872以下附录在编程常要获取的,包括获取一些常用的HTTP头: ... -
从头开始构建一个web即时通讯系统(五) - 服务器端 - policyserver
2012-12-21 00:04 1026简介 policy-file是flash socket ... -
从头开始构建一个web即时通讯系统(四) - 客户端 - javascript和flash互操作
2012-12-20 23:44 1178简介 在上一篇"基础-web即时通讯系统的四 ... -
ant jar
2012-10-23 09:04 1345<?xml version="1.0&qu ... -
VSS.plugin_1.62 for Eclipse3.6 的安装
2012-05-03 10:44 1160一、下载VSS插件 可以去官方网站下载,也可以在这里h ... -
java调用ffmpeg执行视频转换
2011-09-18 23:34 4972用java小例题说明更直观:(可以直接编译运行) 环境我在w ... -
※JavaScript代码压缩及文档制作工具[本本作品]
2011-09-07 14:26 1467现提供 试用版 下载,欢迎试用,可以本贴内提出问 ... -
Jocky混淆JAVA代码(保护你的JAVA项目)
2011-09-02 13:45 1000Jocky混淆JAVA代码(保护你的JAVA项目) ... -
位运算学习
2011-08-18 11:18 961位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移 ... -
利用 Ant 和 Eclipse 有效地提高部署工作效率
2011-06-09 17:35 1205读者定位为具有 Java ... -
Java 之 String 的用法及相关注意
2011-03-31 16:04 2459一、String方法列表 1、length() 字符串的 ... -
五个有用的servlet过滤器
2010-10-29 10:01 999五个有用的过滤器 一、使浏览器不缓存页面的过滤器 imp ... -
log4j.properties 完整版
2010-10-18 01:07 940log4j.rootLogger=DEBUG,CONSOLE, ...
相关推荐
总的来说,使用Swing实现一个支持语法高亮的编辑器是一项挑战性的任务,需要深入理解GUI编程、文本处理和解析技术。但通过精心设计和适当利用已有资源,可以创建出功能强大、用户友好的代码编辑器。
RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器 RSyntaxTextArea是 Java Swing 应用程序的一个可以自定义的语法高亮文本组件。 开箱即用,它支持 40 + 编程语言。代码折叠。搜索和替换...
在Java Swing中实现PDF阅读器是一项技术挑战,涉及到对PDF文件格式的理解、IO操作、Swing组件的使用以及可能的第三方库集成。 PDF(Portable Document Format)是一种广泛使用的文件格式,用于存储文档,包括文本...
在这个“Javasheji.rar”压缩包中,包含了一个关于Java代码编辑器的课程设计项目,以及一个名为“Javasheji.doc”的文档,该文档详细阐述了课程设计的实现过程和相关知识点。 首先,我们要理解Java代码编辑器的基本...
总的来说,MintChime-Editor是一个功能全面、跨平台的代码编辑器,它基于Java Swing,提供多语言支持和语法高亮,以满足不同编程需求。对于那些寻求强大、灵活和高效编码工具的开发者来说,MintChime-Editor无疑是一...
总之,创建一个Java Swing文本编辑器涉及到多个技术层面,包括组件使用、事件处理、文件操作、文本格式化以及可能的扩展功能实现。通过深入理解和实践这些知识点,开发者可以构建出功能完备且用户友好的文本编辑器。
SGS Swing语法加亮编辑器通过高亮显示SGS语法的关键字、操作符和注释,使得代码更易于阅读和理解,从而降低错误率,提升编写质量。 编辑器采用Java Swing作为UI框架,Swing是一个用于构建桌面应用程序的Java库,...
**基于Swing的简单Java编辑器** 在Java编程领域,Swing是一个用于构建桌面应用程序的图形用户界面(GUI)工具包。它属于Java Foundation Classes (JFC)的一部分,由Sun Microsystems开发,现在由Oracle公司维护。...
该文本编辑器采用JAVA Swing框架进行开发,并使用JavaFX实现代码高亮和自动补全功能。具体实现思路如下: ### 1. 打开、保存、新建文本文件 使用JFileChooser类实现文件的打开、保存和新建功能。用户可以通过菜单...
在描述中提到的关键字高亮显示,这是一个在文本编辑器或代码查看器中常见的功能,它有助于提高代码可读性和用户体验。关键字高亮通常涉及到以下几个核心概念: 1. **颜色主题**:在Java Swing中,你可以通过自定义...
5. **文本格式化和高亮**:为了增强用户体验,编辑器可能实现了代码高亮功能。这通常需要自定义`SyntaxHighlighter`类,根据不同的编程语言关键字和语法结构进行文本颜色标记。 6. **查找替换功能**:在编辑器中,...
本文主要关注的是“Java实现的编辑器语法着色功能”。语法着色是编程环境中的一项重要特性,它通过为不同类型的编程元素(如关键字、注释、字符串等)赋予不同的颜色,使得代码更易于阅读和理解。在Java环境下,我们...
在本项目中,标题为"本编辑器第一版(java源代码)",这表明我们正在探讨一个基于Java编程语言实现的文本编辑器的初版。这个编辑器可能包含基本的文本编辑功能,如文本输入、剪切、复制、粘贴、查找和替换等。作为...
在 Swing 应用中,这些资源文件可以用来实现文本编辑器的多语言支持。 6. **src**: 这是源代码目录,其中包含了 Java 源代码文件。在 Swing 文本编辑器项目中,你会在这里找到关于如何使用 RSyntaxTextArea、...
这个Java编辑器的设计和实现涉及了多个Java编程的核心概念和技术。首先,它是基于Java Swing库构建的图形用户界面(GUI),Swing提供了丰富的组件来创建窗口、菜单、按钮等元素,使得用户可以进行文本输入、保存、...
RSyntaxTextArea是一款专门为Java Swing应用程序设计的开源文本编辑器组件,它提供了丰富的功能,如语法高亮、代码折叠等,使得开发人员能够轻松地在自己的应用中集成一个强大的代码编辑界面。这款组件非常适合用于...
Swing文本编辑器的核心组件是`JTextArea`,这是一个可以显示和编辑多行文本的组件。我们可以使用`JScrollPane`来包裹`JTextArea`,以便在文本内容过多时自动滚动。`JScrollPane`提供了水平和垂直滚动条,使得用户...
通过阅读和分析这部分代码,开发者可以了解到如何在Java中实现文本编辑器的基本功能,如打开、保存文件,高亮显示代码,以及可能的自定义快捷键设置等。 "www.pudn.com.txt"看起来像是一个示例文本文件,可能是用来...
Java编辑器源码的设计与实现是一项复杂而富有挑战性的任务,涉及到许多核心的编程概念和技术。这个源代码实例提供了一个完整的解决方案,可以帮助开发者深入理解Java编程语言,以及如何构建一个功能丰富的文本编辑器...