Come posso modificare dinamicamente il colore di sfondo dell'elemento selezionato in JList?Come modificare dinamicamente il colore di sfondo dell'elemento selezionato in JList
risposta
qualcosa come il seguente dovrebbe aiutare come punto di partenza:
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());
Se ho capito bene, controlla javax.swing.ListCellRenderer
. È necessario reimplementarlo o estendere javax.swing.DefaultListCellRenderer
e personalizzare il metodo getListCellRendererComponent
.
Un modo più semplice sarebbe quella di andare alla modalità di progettazione in Eclipse, e nelle proprietà del JList, fai clic sul pulsante che ha due piccole frecce con una grande freccia gialla in mezzo per aprire "mostra proprietà avanzate". quindi scorrere verso il basso e cambiare il colore in cui dice "selectionBackground" e cambiare il colore lì (sarà probabilmente grigio, ma cambierà comunque). Ora, quando esegui il tuo programma, qualunque cosa tu selezioni, lo sfondo sarà quel colore.
jList1.setSelectedIndex(currentLine);
jList1.setSelectionBackground(Color.red);
Basta impostare l'indice selezionato di tutti gli elementi che si desidera colorare in un ciclo e cambiare il colore di conseguenza!