引言
最近在整理代码时,找到了去年写的一个编辑器语法着色功能的代码。想来刚刚完成的时候,就想着能够公布出来,与大家交流。但直到现在仍寂寞的待在文件夹的角落里,颇有点明珠暗投的意思。自己能理解简单,通过讲解让别人也理解就不那么容易了,还是要找机会发布一下。
语法着色,是现在代码编辑器最基本的功能之一,相信大家也都非常熟悉。定义什么的就不必下了。比起干巴巴的文字,图更吸引大家的眼球。先看一下实现后的效果。
Java语法着色
SQL语法着色:
实现:
1.我先假设自己已经实现了语法着色功能。那我应该怎么调用呢?语法着色应该发生在代码修改的时候,也就是文字的编辑,包括插入和删除,剪切和粘贴也都是插入和删除的一种。那么Java的控件中有没有一个编辑器可以感应到插入和删除呢?恰好有一个:JTextPane。监听器应该是下面这个样子:
2.这样,问题就被变成,在代码发生变化时,如何实现一个方法processPaint()来着色,看下面的代码,在插入删除事件中,将处理塞到事件队列最后,以免出现线程问题。具体操作看一下注释:
要解释的是那个【分段】,用的单词是Token,指的是被着色的一个代码片段