我有JTextPane
个对象。我已添加DefaultHighlighter.DefaultHighlightPainter
荧光笔,如下所示:
DefaultHighlighter.DefaultHighlightPainter high = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
try {
jTextPane1.getHighlighter().addHighlight(0, 20, high);
} catch (BadLocationException ex) {
ex.printStackTrace();
}
现在,我想用鼠标选择(突出显示)文字。当我这样做时,文本的绿色部分不会以蓝色突出显示。我希望当我用鼠标选择它时,所有文本都会以蓝色突出显示。我怎么能解决这个问题?
答案 0 :(得分:0)
尝试用扩展名替换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);
}
}
}
}
答案 1 :(得分:0)
也许你可以尝试这样的事情:
UIManager.put("JTextPane.selectionBackground", new javax.swing.plaf.ColorUIResource(Color.YELLOW));
在创建JTextPane之前执行此操作。