- 浏览: 235575 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
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 735入门 本教程所讲述的 ... -
GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)
2015-10-26 17:34 1094WGS-84:是国际标准,GPS坐标(Google Eart ... -
JSR-356 WebSocket API规范中文版
2014-10-21 17:21 841转:http://jinnianshilongnian.it ... -
EL表达式大全
2014-10-10 14:29 6261.uri="http://java.sun.c ... -
Spring4.0实用教程-4.x初体验
2014-06-10 13:37 1029一、环境准备 1、配置Spring Maven仓库。 发 ... -
看老外程序员如何向妻子解释设计模式
2013-05-16 10:58 752设计模式是什么? 设计模式是这些原则在某些特定 ... -
Windows下Github使用方法
2013-01-31 10:35 927Windows下Github使用方法 ... -
一些常用的HTTP头
2013-01-23 18:08 824以下附录在编程常要获取的,包括获取一些常用的HTTP头: ... -
从头开始构建一个web即时通讯系统(五) - 服务器端 - policyserver
2012-12-21 00:04 980简介 policy-file是flash socket ... -
从头开始构建一个web即时通讯系统(四) - 客户端 - javascript和flash互操作
2012-12-20 23:44 1125简介 在上一篇"基础-web即时通讯系统的四 ... -
ant jar
2012-10-23 09:04 1298<?xml version="1.0&qu ... -
VSS.plugin_1.62 for Eclipse3.6 的安装
2012-05-03 10:44 1129一、下载VSS插件 可以去官方网站下载,也可以在这里h ... -
java调用ffmpeg执行视频转换
2011-09-18 23:34 4906用java小例题说明更直观:(可以直接编译运行) 环境我在w ... -
※JavaScript代码压缩及文档制作工具[本本作品]
2011-09-07 14:26 1428现提供 试用版 下载,欢迎试用,可以本贴内提出问 ... -
Jocky混淆JAVA代码(保护你的JAVA项目)
2011-09-02 13:45 971Jocky混淆JAVA代码(保护你的JAVA项目) ... -
位运算学习
2011-08-18 11:18 915位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移 ... -
利用 Ant 和 Eclipse 有效地提高部署工作效率
2011-06-09 17:35 1155读者定位为具有 Java ... -
Java 之 String 的用法及相关注意
2011-03-31 16:04 2432一、String方法列表 1、length() 字符串的 ... -
五个有用的servlet过滤器
2010-10-29 10:01 968五个有用的过滤器 一、使浏览器不缓存页面的过滤器 imp ... -
log4j.properties 完整版
2010-10-18 01:07 902log4j.rootLogger=DEBUG,CONSOLE, ...
相关推荐
Swing实现编辑器(支持语法高亮),支持的语言类型大致为十几个。
RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器 RSyntaxTextArea是 Java Swing 应用程序的一个可以自定义的语法高亮文本组件。 开箱即用,它支持 40 + 编程语言。代码折叠。搜索和替换...
该文本编辑器采用JAVA Swing框架进行开发,并使用JavaFX实现代码高亮和自动补全功能。具体实现思路如下: ### 1. 打开、保存、新建文本文件 使用JFileChooser类实现文件的打开、保存和新建功能。用户可以通过菜单...
MintChime 编辑器多种编程语言的源代码编辑器。
文本编辑器是一个基于Java的应用程序,用于编辑文本文件,具有常见的文本编辑功能,如打开、保存、编辑、查找替换等。以下是该文本编辑器的一些关键特点和功能: 用户界面设计: 简洁直观:设计简洁清晰的用户界面...
RSyntaxTextArea是Java Swing应用程序的可自定义的语法突出显示文本组件。 开箱即用,它支持40多种编程语言的语法突出显示,代码折叠,搜索和替换,并具有用于代码完成和拼写检查的附加库。 通过工具其他语言的语法...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
特征具有语法高亮显示HTML源代码编辑器上下文相关的摇摆动作无限撤消/重做表创建和编辑点击并拖动可调整大小的表格点击并拖动可调整大小的图像易于嵌入到Swing应用程序或Applet中您在HTML编辑组件中期望的所有基本...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...