Como alterar a cor de fundo do item selecionado no jlist dinamicamente
Pergunta
Como posso alterar a cor de fundo do item selecionada no JLIST dinamicamente?
Solução
Algo como o seguinte deve ajudar como ponto 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());
Outras dicas
Uma maneira mais fácil seria ir para o modo de design no Eclipse e, nas propriedades do seu JLIST, clique no botão que possui duas pequenas setas com uma grande flecha amarela entre eles para abrir "Mostrar propriedades avançadas". Em seguida, role para baixo e altere a cor onde diz "seleção background" e altere a cor lá (provavelmente será cinza, mas ainda mudará). Agora, quando você executa seu programa, o que for selecionado, o plano de fundo será essa cor.
jList1.setSelectedIndex(currentLine);
jList1.setSelectionBackground(Color.red);
Basta definir o índice selecionado de todos os itens que você deseja colorir em um loop e alterar a cor de acordo!
Se estou claramente entendendo você, olhe para javax.swing.ListCellRenderer
. Você precisa reimplementá -lo ou estender javax.swing.DefaultListCellRenderer
e personalizar o getListCellRendererComponent
método.