Как динамически изменять цвет фона выбранного элемента в JList

StackOverflow https://stackoverflow.com/questions/1576853

  •  21-09-2019
  •  | 
  •  

Вопрос

Как я могу изменить цвет фона элемента, который выбирается в 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 способ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top