我试图突出显示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库)。
答案 0 :(得分:4)
我建议使用JTextPane / JEditorPane,这些JTextComponents
可以装饰并支持样式文字,JTextPane / JEditorPane
您可以添加JComponent
例如Icon
。 {{1}} ...),HighlightPainter
答案 1 :(得分:0)
来自@ camickr LinePainter.java的想法适用于此:实施Highlighter.HighlightPainter
,让其paint(..)
方法超出所提供的bounds
,画一个相同高度和全宽的矩形。