java - 在文本上设置突出显示会删除该文本上的鼠标突出显示

标签 java swing

我正在突出显示文本区域中的一些文本:

Highlighter highlighter = getHighlighter();
Highlighter.HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(new Color(201, 197, 198));
highlighter.addHighlight(0,10, painter);

这很好用。但是,当我使用鼠标突出显示文本时,我希望使用默认突出显示颜色。当鼠标不再突出显示文本时,它将恢复为我选择的突出显示颜色,new Color(201, 197, 198);

鼠标高亮有可能优先于我设置的高亮吗?

谢谢

最佳答案

您可以定义自己的 Highlighter 并设置为 JTextComponent。请参阅 DefaultHighlighter。

绘制的顺序在下面的方法中定义,但高亮和 LayeredHighlightInfo 不可访问以覆盖(包级别)

public void paintLayeredHighlights(Graphics g, int p0, int p1,
                       Shape viewBounds,
                       JTextComponent editor, View view) {
    for (int counter = highlights.size() - 1; counter >= 0; counter--) {
        Object tag = highlights.elementAt(counter);
        if (tag instanceof LayeredHighlightInfo) {
        LayeredHighlightInfo lhi = (LayeredHighlightInfo)tag;
        int start = lhi.getStartOffset();
        int end = lhi.getEndOffset();
        if ((p0 < start && p1 > start) ||
            (p0 >= start && p0 < end)) {
            lhi.paintLayeredHighlights(g, p0, p1, viewBounds,
                           editor, view);
        }
        }
    }
}

关于java - 在文本上设置突出显示会删除该文本上的鼠标突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9017636/

相关文章:

java - OpenGL 淡出/淡入不起作用

java - 用Java中的步骤迭代LinkedList

java - scala 的 Collectors.groupingBy() 替代方案

java - java中URL截图的任何方法

java - 代码中的 char[] 返回类型不接受 char[i][] 值

java - 如何在 PayPal REST API 中获取用户信息

java - JPopupMenu.show 显示具有奇怪行为的弹出菜单(有时显示为灰色框)

java - 玩家对象向一个方向移动但转向不同的方向

java - 在弹出窗口中使用 TextBubbleBorder

java - 在 mac os mavericks 上将 mySQL 连接到 java netbeans 时出错