Java: Как обновить пользовательский ListCellRenderer? - PullRequest
0 голосов
/ 23 февраля 2012

Я реализовал свой собственный ListCellRenderer для моего приложения чата.Я использую JList, чтобы перечислить всех пользователей.Средство визуализации ячеек состоит в основном из значка, который показывает, включен ли конкретный пользователь в данный момент или нет, и его / ее имя.Список управляется моделью DefaultListModel, которую я использую для предоставления JList необходимой информации.

Но когда модель списка меняет свое состояние (например, пользователь переходит в автономный режим), средство визуализации ячейки списка, по-видимому, не

Кто-нибудь есть идеи, как решить эту проблему?Пытался вызвать updateUI () на экземпляре JList, но не помогло.

Заранее большое спасибо!

1 Ответ

4 голосов
/ 23 февраля 2012

Считыватель ячеек работает нормально. Что не работает, так это ListModel. DefaultListModel не обнаруживает изменения внутреннего состояния объектов модели. Вам нужно позвонить fireContentsChanged по списку моделей. Возможно, вам нужно добавить слушателей к вашим модельным объектам, и, возможно, вам даже нужно расширить DefaultListModel; поскольку я не вижу его кода, я не знаю, как выглядит ваш.

Вы не должны просто вызывать случайный метод с именем, которое звучит хорошо (updateUI делает что-то совсем другое).

...