2015-11-04 181 views
0

我試圖更改TextArea或TextPane或任何其他突出顯示的顏色。JTextArea或JTextPane設置突出顯示的文本顏色

請注意,我在尋找改變的顏色:

enter image description here

,而不是文字。

我也看了看在JTextAreasetHighlighter()功能,但似乎我需要輸入一個匿名Highlighter類,我完全不知道如何實現全部覆蓋。

jta.setHighlighter(new Highlighter() { 
    @Override 
    public void removeHighlight(Object tag) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void removeAllHighlights() { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void paint(Graphics g) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void install(JTextComponent c) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public Highlight[] getHighlights() { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    @Override 
    public void deinstall(JTextComponent c) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void changeHighlight(Object tag, int p0, int p1) 
      throws BadLocationException { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public Object addHighlight(int p0, int p1, HighlightPainter p) 
      throws BadLocationException { 
     // TODO Auto-generated method stub 
     return null; 
    } 
}); 
+0

您是否嘗試過在'paint(Graphics g)'方法中設置?像'g.setColor(Color.color);' – 3kings

+0

剛剛嘗試過,它們只突出顯示文字。在您取消突出顯示後,它們也不會取消突出顯示文字 –

+0

請嘗試下面的答案,以幫助您更多 – 3kings

回答

1

如果你指的是「正常」的高亮顏色(當你拖動鼠標在文本上),這可以簡單地通過

textArea.setSelectionColor(Color.LIGHT_GRAY); 

(或任何顏色,你希望它有實現的。 )

如果你想在你的文本區域編程突出一個字符序列:

String searchedWord = "word"; 
int pos1 = textArea.getText().indexOf(searchedWord); 
int pos2 = pos1 + searchedWord.length(); 
try { 
    textArea.getHighlighter().addHighlight(pos1, pos2, 
      new DefaultHighlighter.DefaultHighlightPainter(Color.LIGHT_GRAY)); 
} catch (BadLocationException e) { 
    e.printStackTrace(); 
} 

(同樣的作品爲JTextPane

+0

這兩種方式都會導致文本的顏色發生變化。我的意思是,如上所示,改變熒光筆的顏色。也許我應該讓指針變胖? –

+0

@MoonCheesez真的嗎?它不會改變我的文字顏色... [點擊我](http://i.stack.imgur.com/2embp.png) –

+1

我覺得我發現了這個問題...我把顏色設置爲'新顏色(26,38,59,27)'因此,它返回一個高亮顏色,使得我看不到它,並且它將文本顏色設置爲反色。 –

相關問題