2011-09-07 208 views
2

我有一個JList,並在該列表中,我想改變下列單詞的字體顏色。如何設置字體的顏色?

有人說我必須使用CellRenderer,但我還不熟悉這一點。

現在,我的問題是如何設置此渲染器來更改字體的顏色?

有關此事的任何想法?

謝謝...

+2

建議您隨時打開http://download.oracle.com/javas e/tutorial/uiswing/index.html - 並快速閱讀如何使用的xx章節(使用xx作爲您還不知道的組件:-) – kleopatra

+0

是否可以在一個JLabel中創建兩種不同的顏色清單? – sack

+0

我在我的Jlist中有一個單詞列表,旁邊的每個單詞都是它們的定義。我希望單詞的字體與他們的定義有不同的顏色。我的問題是,是否有可能在一個Jlist中有兩種不同的顏色? – sack

回答

6

退房的JavaDoc,它可能只是有你需要的(例子在頂部)。基本上你只是返回一個組件(如JLabel)與配置的字體顏色。

編輯:既然你想擁有的話用不同的顏色比自己的定義,這裏有兩個可能性,如何能與列單元格渲染來完成:

  1. 返回一個JPanel包含2周的JLabel,一個與詞和一個與定義。這兩個標籤可以有不同的前景色。
  2. JLabel支持HTML(與其他Swing組件一樣),因此您可以將標籤的文本設置爲<html><font color=red>your word</font> - your definitions</html>。請注意,默認的前景色應該是定義的前景色,或者您也可以使用<font>標記包裝定義。看看這個Tutorial
+0

我在我的Jlist中有單詞列表,旁邊的每個單詞都是它們的定義。我希望單詞的字體與他們的定義有不同的顏色。我的問題是,是否有可能在一個Jlist中有兩種不同的顏色? – sack

+1

@Mikel是的,這是可能的。我會添加兩種可能性。 – Thomas

+0

是的..它的工作..謝謝.. ;-) – sack

6

對於JLabel組件嘗試:

new DefaultListCellRenderer(){ 
     @Override 
     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
      JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
      label.setForeground(Color.RED); 
      return label; 
     } 
    }; 
+0

它的工作原理,謝謝! – sack

+0

我在我的Jlist中有單詞列表,旁邊的每個單詞都是他們的定義。我希望單詞的字體與他們的定義有不同的顏色。我的問題是,是否有可能在一個Jlist中有兩種不同的顏色? – sack

2

考慮......,這將更好地利用與JTable一個TableColumn並沒有TableHeaderJList,證明herehere,通過使用prepareRenderer是,因爲JList有很多限制/錯過的方法,因爲JTable

+1

- 1爲過度複雜化;-)這個問題很明顯是關於JList和配置它的單元格外觀的方法是..好...自定義渲染器的實現。 – kleopatra

+0

我很享受只是@Andrew Thompson從你那裏得到它,今天:-) – mKorbel

相關問題