2014-01-22 47 views
1

我有JTextPane對象。我已經添加DefaultHighlighter.DefaultHighlightPainter熒光筆這樣的:如何在應用DefaultHighlighter.DefaultHighlightPainter時更改JTextPane中的文本選擇顏色?

DefaultHighlighter.DefaultHighlightPainter high = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN); 
try { 
    jTextPane1.getHighlighter().addHighlight(0, 20, high); 
} catch (BadLocationException ex) { 
    ex.printStackTrace(); 
} 

現在,我要選擇我的鼠標(高亮)文本。當我這樣做時,文本的綠色部分不會以藍色突出顯示。我希望當我用鼠標選擇它時,所有文本都會以藍色突出顯示。我怎麼能解決這個問題?

Selection issue

回答

0

嘗試擴展一個替換DefaultHighlighter其中覆蓋的方法

從0開始

public void paintLayeredHighlights(Graphics g, int p0, int p1, 
            Shape viewBounds, 
            JTextComponent editor, View view) { 
    for (int counter = highlights.size() - 1; counter >= 0; counter--) { 
     HighlightInfo tag = highlights.elementAt(counter); 
     if (tag instanceof LayeredHighlightInfo) { 
      LayeredHighlightInfo lhi = (LayeredHighlightInfo)tag; 
      int start = lhi.getStartOffset(); 
      int end = lhi.getEndOffset(); 
      if ((p0 < start && p1 > start) || 
       (p0 >= start && p0 < end)) { 
       lhi.paintLayeredHighlights(g, p0, p1, viewBounds, 
              editor, view); 
      } 
     } 
    } 
} 
+0

'HighlightInfo'類被描述爲沒有訪問級別修飾符,所以我不能在我的擴展類中使用這個類。 – polis

0

也許你可以嘗試這樣的事:

UIManager.put("JTextPane.selectionBackground", new javax.swing.plaf.ColorUIResource(Color.YELLOW)); 

在創建JText之前執行此操作窗格。

+0

抱歉,這並沒有幫助 – polis