2009-07-02 20 views

Respuesta

14

Para personalizar el aspecto de las celdas JList necesita escribir su propia implementación de ListCellRenderer.

Un ejemplo de implementación de la class puede tener este aspecto: (esbozo, no probado)

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; 
    } 
} 

Para utilizar este procesador, en el constructor de sus JList' s de poner este código:

setCellRenderer(new MyListCellThing()); 

Para cambiar el comportamiento de la celda según lo seleccionado y tiene foco, use los valores booleanos proporcionados.

+0

Cuidado, debe manejar el caso donde se selecciona la fila (el color cambia) –

+0

Sí, lo mencioné en la parte inferior de la publicación. – jjnguy

+0

Minit nitpick: debería establecerse Background en vez de setBackgroundColor. – ataylor

Cuestiones relacionadas