由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - jtextpane syntax highlight问题
相关主题
请教一个简单的问题keyPressed(KeyEvent e) 需要考虑重入吗
菜鸟问个简单的问题关于java的疑惑 (转载)
这几个函数可以用Generic之类的东西合并么?Java程序如何优雅退出?
Who can recommend me a JavaScript IDETest your PC speed
jvm是怎么implement monitor的?折腾了一天,实在是绝望了,请教请教
swing的text组件能实现ultraedit的列编辑功能吗Java中如何动态生成对象
override/overload/overwrite in JavaRe: for help
java 响应速度问题new in JSP 2.0 spec
相关话题的讨论汇总
话题: int话题: jtextpane话题: highlight话题: syntax
进入Java版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
我现在做了一个文本编辑器,用于BASIC语言等。
这个编辑器可以把关键字变蓝色并变粗体,字符串变粉红,没有右边引号的字符串变红
,注释变绿
很简单吧?
作了一个函数叫processtext(int start, int length),在keyreleased里调用。
经常死机,就是程序不继续执行了。
于是我用了一个semaphore light来控制process不能重入
@Override
public void keyReleased(KeyEvent e) {
if (changed){
int pos = getCaretPosition();
Element elem = Utilities.getParagraphElement((JTextComponent)e.getSource
(), pos);
int start = elem.getStartOffset();
int end = elem.getEndOffset();
try {
light.acquire();
process(sta
b***i
发帖数: 3043
2
觉得可能是一个currentLineHighLighter的问题,是这样的,要求光标所在的行要高亮
,所以
程序如下,当时调试的时候很多exception,我就catch了,但是没有处理,不知道有没
有问题。把这个highlighter注释掉,就不死机了。
public class CurrentLineHighlighter{
private static final String LINE_HIGHLIGHT = "linehilight"; // as
clientproperty
private static final String PREVIOUS_CARET = "previousCaret"; // - used as
clientproperty
private static Color col = new Color(222,222,255);
private static Object obj;
private CurrentLineHighlighter(){
}
public static void install(JTextComponent c){

【在 b***i 的大作中提到】
: 我现在做了一个文本编辑器,用于BASIC语言等。
: 这个编辑器可以把关键字变蓝色并变粗体,字符串变粉红,没有右边引号的字符串变红
: ,注释变绿
: 很简单吧?
: 作了一个函数叫processtext(int start, int length),在keyreleased里调用。
: 经常死机,就是程序不继续执行了。
: 于是我用了一个semaphore light来控制process不能重入
: @Override
: public void keyReleased(KeyEvent e) {
: if (changed){

b***i
发帖数: 3043
3
似乎的解决方案
updateUI(); after the setCaret(..)
参见
http://72.5.124.102/thread.jspa?threadID=518808&tstart=4965
我需要重复几百次输入,删除才能确定是否死机。不过,badlocationexception都不见了

【在 b***i 的大作中提到】
: 我现在做了一个文本编辑器,用于BASIC语言等。
: 这个编辑器可以把关键字变蓝色并变粗体,字符串变粉红,没有右边引号的字符串变红
: ,注释变绿
: 很简单吧?
: 作了一个函数叫processtext(int start, int length),在keyreleased里调用。
: 经常死机,就是程序不继续执行了。
: 于是我用了一个semaphore light来控制process不能重入
: @Override
: public void keyReleased(KeyEvent e) {
: if (changed){

1 (共1页)
进入Java版参与讨论
相关主题
new in JSP 2.0 specjvm是怎么implement monitor的?
怎样在JAVA里把浮点型变量转化成字符串?swing的text组件能实现ultraedit的列编辑功能吗
怎样替换字符串中/n 到
override/overload/overwrite in Java
问一个特别土的问题java 响应速度问题
请教一个简单的问题keyPressed(KeyEvent e) 需要考虑重入吗
菜鸟问个简单的问题关于java的疑惑 (转载)
这几个函数可以用Generic之类的东西合并么?Java程序如何优雅退出?
Who can recommend me a JavaScript IDETest your PC speed
相关话题的讨论汇总
话题: int话题: jtextpane话题: highlight话题: syntax