2014-07-22 68 views
1

我正在創建一個應用程序,在其中顯示JList中的幾百條記錄。JList中單行中的多種字體顏色

偶爾,我們想用不同的字體顏色突出顯示每條記錄中的某些值。

我已經嘗試過使用完美的HTML,但是如果這些記錄中的任何一個包含任何類型的html標記,它們將會出現可怕的錯誤,因爲它們會被渲染。

Unforunately你不能有:

normaltext<html><font color="red">redtext</font></html> 

,因爲它似乎在HTML必須是開頭。

我已經嘗試覆蓋getListCellRendererComponent,我可以創建一個JPanel,併爲記錄的每個部分使用不同的前景顏色的JLabel,但這對於大型記錄而言效率不高。

由於授權問題,我寧願不使用任何第三方解決方案。

有沒有人有這種情況下的任何解決方案?

感謝

回答

3

我一直在使用的HTML這完美的作品嚐試,但如果對這些記錄包含的任何類型的HTML標籤 的,因爲他們會被渲染,這將去 可怕的錯誤。

其實如果文本包含HTML標記,你可以逃脫標籤和包裝在<html> escaped text of record</html>標記文本問心無愧所需的顏色

UPDATE工作示例

public static void main(String[] args) { 
    JFrame f=new JFrame(); 
    String text="<html>An example of tag &lt;html&gt; with <font color='red'>&lt;input&gt;</font> tag colored</html>"; 
    f.add(new JLabel(text)); 
    f.pack(); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
} 
+0

是啊,我只是想過,我會只需要轉義<,>,&? – Wassa

+0

這取決於你有格式。有多個庫,例如https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html – StanislavL