有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用LayeredHighlighter

我正在努力理解分层荧光灯。我有两个亮点。 一个是我在创建textarea时高亮显示文本。另一个高亮显示是滚动文本时得到的高亮显示

我遇到的问题是,我用鼠标高亮显示的文本与创建textarea时设置的文本高亮显示不重叠

下面是创建文本区域时高亮显示的文本

Original highlight

当我用鼠标突出显示整个文本时,它不会出现在顶部

With selection

我想我需要用分层荧光灯。我试图用painter.paintLayer(...)来使用它。我在创建灰色高亮时使用了这个

有没有办法将我的灰色高光设置在后面,这样当我选择整条线时,我的鼠标蓝色高光就会出现在上面?所以整条线应该是蓝色的

谢谢:)


共 (2) 个答案

  1. # 1 楼答案

    从未使用过J/XLayer,但有另一种方法可以绘制JViewportGlass/RootPane,理论上它可以创建3层绘画

    编辑

    通过使用J/XLayer是否还有另一个问题需要解决MouseEvent例如this way

  2. # 2 楼答案

    @Evgeni的答案是正确的。我花了一些时间才找到这篇关于如何同时为我的JEditorPane渲染高光和选择的帖子

    final Highlighter highlighter = new DefaultHighlighter();
    editorPane.setHighlighter(highlighter);
    editorPane.setSelectionColor(new Color(80, 120, 255, 100));
    
    final HighlightPainter matchPainter = new Highlighter.HighlightPainter() {
    
        final DefaultHighlightPainter helper = newDefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
                        @Override
                        public void paint(Graphics g, int p0, int p1, Shape bounds, JTextComponent c) 
        {
            helper.paint(g, p0, p1, bounds, c);
        }
    };
    
    highlighter.addHighlight(iIndexToTradeId, iIndexToTradeId+sTradeId.length(), matchPainter);