Pergunta

Como posso alterar a cor de fundo do item selecionada no JLIST dinamicamente?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top