我正在突出显示文本区域中的一些文本:
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/