2009-07-02 39 views

回答

14

要定製JList單元格的外觀,您需要編寫自己的ListCellRenderer實現。

class的樣本實現可能是這樣的:(草圖,未測試)

public class MyListCellThing extends JLabel implements ListCellRenderer { 

    public MyListCellThing() { 
     setOpaque(true); 
    } 

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     // Assumes the stuff in the list has a pretty toString 
     setText(value.toString()); 

     // based on the index you set the color. This produces the every other effect. 
     if (index % 2 == 0) setBackground(Color.RED); 
     else setBackground(Color.BLUE); 

     return this; 
    } 
} 

要使用此渲染,在你JList的構造器把這個代碼:

setCellRenderer(new MyListCellThing()); 

要根據所選內容和焦點更改單元格的行爲,請使用提供的布爾值。

+0

小心,你需要處理行選擇的情況下(顏色變化然後) – 2009-07-02 21:54:36