W języku Java, w jaki sposób uzyskać JList
z naprzemiennymi kolorami? Jakiś przykładowy kod?Jak wygenerować Jlista z naprzemiennymi kolorami
10
A
Odpowiedz
14
Aby dostosować wygląd komórek JList
, należy napisać własną implementację ListCellRenderer
.
Implementacja próbka class
może wyglądać następująco: (wstępny szkic, nie testowane)
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;
}
}
Do użycia tej renderujący, w konstruktorze twoi JList
„s umieścić ten kod:
setCellRenderer(new MyListCellThing());
Aby zmienić zachowanie komórki na podstawie wybranych i mających fokus, należy użyć podanych wartości logicznych.
Ostrożnie, musisz poradzić sobie z przypadkiem, w którym rząd jest wybrany (kolor zmienia się wtedy) –
tak, wspomniałem o tym na dole postu. – jjnguy
Drobne wybijanie: powinno być ustawioneBackground zamiast setBackgroundColor. – ataylor