突出显示JTextArea的行

时间:2012-02-14 14:50:04

标签: java swing

我试图突出显示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库)。

2 个答案:

答案 0 :(得分:4)

我建议使用JTextPane / JEditorPane,这些JTextComponents可以装饰并支持样式文字,JTextPane / JEditorPane您可以添加JComponent例如Icon。 {{1}} ...),HighlightPainter

的示例

答案 1 :(得分:0)

来自@ camickr LinePainter.java的想法适用于此:实施Highlighter.HighlightPainter,让其paint(..)方法超出所提供的bounds,画一个相同高度和全宽的矩形。