gpt4 book ai didi

java - 应用 DefaultHighlighter.DefaultHighlightPainter 时如何更改 JTextPane 中的文本选择颜色?

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:36 24 4
gpt4 key购买 nike

我有 JTextPane 对象。我添加了 DefaultHighlighter.DefaultHighlightPainter 荧光笔,如下所示:

DefaultHighlighter.DefaultHighlightPainter high = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
try {
jTextPane1.getHighlighter().addHighlight(0, 20, high);
} catch (BadLocationException ex) {
ex.printStackTrace();
}

现在,我想用鼠标选择(突出显示)文本。当我这样做时,文本的绿色部分不会以蓝色突出显示。我希望当我用鼠标选择它时,所有文本都会以蓝色突出显示。我该如何解决这个问题?

Selection issue

最佳答案

尝试用扩展的替换 DefaultHighlighter 来覆盖该方法

从0开始

public void paintLayeredHighlights(Graphics g, int p0, int p1,
Shape viewBounds,
JTextComponent editor, View view) {
for (int counter = highlights.size() - 1; counter >= 0; counter--) {
HighlightInfo 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 - 应用 DefaultHighlighter.DefaultHighlightPainter 时如何更改 JTextPane 中的文本选择颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com