In Java, come si ottiene uno JList
con colori alternati? Qualche codice di esempio?Come generare una Jlist con colori alternati
10
A
risposta
14
Per personalizzare l'aspetto di una cella JList
è necessario scrivere la propria implementazione di ListCellRenderer
.
Un esempio di implementazione del class
può apparire come segue: (schizzo, non testato)
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;
}
}
Per utilizzare questo renderer, nel costruttore 's tuoi JList
inserire questo codice:
setCellRenderer(new MyListCellThing());
Per modificare il comportamento della cella in base a selezionato e attivato, utilizzare i valori booleani forniti.
Attento, è necessario gestire il caso in cui è selezionata la riga (cambia colore quindi) –
sì, ho detto che in fondo al post. – jjnguy
Minor nitpick: dovrebbe essere setBackground anziché setBackgroundColor. – ataylor