2012-02-14 101 views
3

我想突出顯示JTextArea子類的多行(未選中)。雖然我想強調整行,而不是每行包含的文本。我得到了這個工作,但它只是突出顯示文字:突出顯示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庫)。

+1

你的代碼在XP上使用JDK6_7。關鍵是'最終'值。當我使用'結束'時,整條線突出顯示。當我使用'end - 1'時,只有文本被突出顯示。因此,您需要確保重點中包含換行符。也許嘗試使用'結束+1'?如果您仍然遇到問題,請發佈您的SSCCE,也許這是版本/平臺問題。 – camickr 2012-02-14 16:41:46

+0

@camickr s/he使用Fifesoft的JTextArea的衍生物, – mKorbel 2012-02-14 16:47:59

+0

更改結束偏移量只會使突出顯示變成我猜測的一行。我檢查它的壽。 – Giannis 2012-02-14 18:18:35

回答

4

我建議使用JTextPane/JEditorPane,這些JTextComponents可裝飾和配套樣式的文本,該JTextPane/JEditorPane您可以添加任何JComponent例如Icon ...),例如用於HighlightPainter

+0

我正在使用RSyntaxTextArea,因爲我想編寫Java代碼,所以更改組件類型不是一個選項。 :/ http://javadoc.fifesoft.com/rsyntaxtextarea/ – Giannis 2012-02-14 15:13:19