Como gerar uma JList com cores alternadas
Pergunta
Em Java como faço para obter um JList
com a alternância de cores? Qualquer código de exemplo?
Solução
Para personalizar a aparência de um células JList
que você precisa para escrever sua própria implementação de um ListCellRenderer
.
A implementação de exemplo do class
pode ser parecido com este: (esboço, não testada)
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;
}
}
Para usar este processador, no construtor do JList
colocar esse código:
setCellRenderer(new MyListCellThing());
Para alterar o comportamento da célula com base no selecionado e tem o foco, use os valores booleanos prestados.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow