JList не показывает выбранное значение - PullRequest
4 голосов
/ 30 августа 2011

Вот мой вопрос: в небольшом приложении Swing я создаю JList, который работает с ListDefaultModel.Я помещаю в него некоторые значения, и когда я пытаюсь щелкнуть по этим значениям, ничего графического не меняется.

Я имею в виду: событие выделения повышается, но у меня нет маленького прямоугольника, который обычно окрашен в синий цвет.

Надеюсь, у вас появятся идеи.

Ответы [ 2 ]

1 голос
/ 29 мая 2018

У меня была такая же проблема (спасибо ОП за подсказку). Оказалось, что мой класс ListCellRenderer реализует интерфейс ListCellRenderer вместо расширения DefaultListCellRenderer. И позвони super.getListCellRendererComponent.

Так что используйте

class MyListCellRenderer extends ListCellRenderer {}

вместо

class MyListCellRenderer extends JLabel implements ListCellRenderer {}
1 голос
/ 30 августа 2011

По моему опыту, такие ошибки часто бывают вызваны другими исключениями в вашем коде.Другими словами, если в вашем коде возникла исключительная ситуация NullPointerException в результате попытки SWING получить значение, отображаемое в вашем списке, то ваш графический интерфейс может перестать отвечать или вести себя странно.

Моим первым советом было бы попробовать очень простой пример, например:

DefaultListModel m = new DefaultListModel();
m.addElement("One");
m.addElement("Two");
m.addElement("Three");
m.addElement("Four");
m.addElement("Five");
SomeList.setModel(m);

Если это работает, то проверьте свой код, чтобы увидеть, если что-то не так.Если приведенный выше пример не работает, я бы сказал, что вы должны опубликовать некоторые подробности здесь.

Удачи!

...