¿Cómo cambiar el color de fondo del elemento seleccionado en JList dinámicamente

StackOverflow https://stackoverflow.com/questions/1576853

  •  21-09-2019
  •  | 
  •  

Pregunta

¿Cómo puedo cambiar el color de fondo del elemento que se selecciona en JList dinámicamente?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top