Как динамически изменять цвет фона выбранного элемента в JList
Вопрос
Как я могу изменить цвет фона элемента, который выбирается в JList динамически?
Решение
Что-то вроде следующего должно помочь в качестве отправной точки:
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());
Другие советы
Более простым способом было бы перейти в режим разработки в Eclipse и в свойствах вашего JList нажать на кнопку с двумя маленькими стрелками и большой желтой стрелкой между ними, чтобы открыть "показать дополнительные свойства". затем прокрутите вниз и измените цвет там, где написано "selectionBackground", и измените цвет там (вероятно, он будет серым, но он все равно изменится).Теперь, когда вы запускаете свою программу, что бы вы ни выбрали, фон будет этого цвета.
jList1.setSelectedIndex(currentLine);
jList1.setSelectionBackground(Color.red);
Просто установите выбранный индекс всех элементов, которые вы хотите раскрасить в цикле, и измените цвет соответствующим образом!
Если я вас ясно понимаю, загляните в javax.swing.ListCellRenderer
.Вам нужно переопределить его или расширить javax.swing.DefaultListCellRenderer
и настроить getListCellRendererComponent
способ.