java - 我的插件代码降低了 Eclipse 的速度,我可以改进什么?

标签 java eclipse eclipse-plugin

我有一个 ITextViewer 对象,以及 Eclipse 在其中显示代码的 StyledText 小部件。我想突出显示由行号定义的一行。因此,我向 StyledText 对象添加了一个 LineBackgroundListener 并编写了以下代码:

private class HighlightLine implements LineBackgroundListener {

        @Override
        public void lineGetBackground(LineBackgroundEvent event) {
            if (lineToHighlight != -1) {
                int line = ((StyledText) event.widget).getLineAtOffset(event.lineOffset);
                if (line == lineToHighlight) {
                    event.lineBackground = styledText.getSelectionBackground();
                } else if (line == previousLineToHighlight) {
                    event.lineBackground = styledText.getBackground();
                }
                styledText.redraw();
                styledText.update();
            }
        }

    }

这个工作或多或少很好,但问题是,它大大减慢了 Eclipse 的速度。情况可能如此,因为它必须经常更新 Widget,而这并不是最佳选择。然而,经过多次尝试,我想不出其他方法。有什么想法吗?

最佳答案

您不需要这些(昂贵的)调用:

styledText.redraw();
styledText.update();

lineGetBackground 在绘制线操作期间调用,因此不需要重绘或更新。

注意:如果 StyledText 控件具有任何 StyleRange 范围,它们可能会覆盖背景。

关于java - 我的插件代码降低了 Eclipse 的速度,我可以改进什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26399308/

相关文章:

Java Jlist 不更新

eclipse - JavaRebel 与 Maven 中的多模块企业项目

eclipse - Eclipse 上的错误

java - 当我们在使用 swt 的 eclipse 插件开发中按下最大化按钮时,复合 Material 的宽度会发生变化

java - jackcess 中的 NoClassDefFoundError

java - 如何使用java从html中删除 " "字符串?

java - 在 Weld 中使用@EJB 作为注入(inject)注解

使用 SSH key 身份验证在 eclipse 中导入 Mercurial 项目

java - 如何使用 Java 播放 WAV 文件?

java - 在不丢失结构的情况下将 Eclipse 项目转换为 Maven