¿Cómo cambiar el color de fondo del elemento seleccionado en JList dinámicamente
Pregunta
¿Cómo puedo cambiar el color de fondo del elemento que se selecciona en JList dinámicamente?
Solución
Algo parecido a lo siguiente debería ayudar como punto de partida:
public class SelectedListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (isSelected) {
c.setBackground(Color.RED);
}
return c;
}
}
// During the JList initialisation...
jlist1.setCellRenderer(new SelectedListCellRenderer());
Otros consejos
Una forma más fácil sería ir al modo de diseño en Eclipse, y en las propiedades de su JList, haga clic en el botón que tiene dos pequeñas flechas con una gran flecha amarilla entre medio para abrir "mostrar propiedades avanzadas". a continuación, desplácese hacia abajo y cambiar el color donde dice "selectionBackground" y cambiar el color de allí (que probablemente será gris, pero éste seguirá modificar). Ahora, cuando se ejecuta el programa, lo que seleccione, el fondo será ese color.
jList1.setSelectedIndex(currentLine);
jList1.setSelectionBackground(Color.red);
El sistema justo índice seleccionado de todos los elementos que desea el color en un bucle y cambiar el color en consecuencia!
Si te lo estoy entendiendo claramente, mira en javax.swing.ListCellRenderer
.
Es necesario volver a implementar o extender javax.swing.DefaultListCellRenderer
y personalizar el método getListCellRendererComponent
.