【发布时间】:2012-02-14 14:50:03
【问题描述】:
我试图突出显示 JTextArea 子类的多行(未选中)。尽管我想突出显示整行,而不仅仅是每行包含的文本。我得到了这个工作,但它只突出显示文本:
DefaultHighlighter h = (DefaultHighlighter)textArea.getHighlighter(
try {
int start = textArea.getLineStartOffset(blockedLine);
int end = textArea.getLineEndOffset(blockedLine);
DefaultHighlightPainter redHighlight = new DefaultHighlighter.DefaultHighlightPainter(Color.RED);
h.addHighlight(start, end, redHighlight);
} catch (BadLocationException ex) {
Logger.getLogger(JavaFilter.class.getName()).log(Level.SEVERE, null, ex);
}
如何突出显示整行而不仅仅是文本?我正在为文本区域使用开源库,因此无法选择 JTextPane 或其他组件(使用 rysntaxtextarea 库)。
【问题讨论】:
-
您的代码适用于我在 XP 上使用 JDK6_7。关键是
end值。当我使用end时,整行都会突出显示。当我使用end - 1时,仅突出显示文本。因此,您需要确保换行符包含在突出显示中。也许尝试使用end + 1?如果您仍有问题,请发布您的 SSCCE,这可能是版本/平台问题。 -
@camickr s/he 使用 Fifesoft 的 JTextArea 的衍生物,
-
更改结束偏移只会使突出显示在下面一行我猜。我会检查它。
-
在 Vista 上的 JDK6_31 上使用默认 Swing JTextArea 尝试了
end想法,但它从不突出显示整行:当我突出显示到\n字符时,当突出显示包含 @987654328 @ 字符和下一行的某个字符,当\n恰好是该范围中包含的最后一个字符时,当突出显示范围仅为\n字符时(在这种情况下没有观察到视觉差异)。在所有这些情况下,该行最后一个字符右侧的区域保持白色。