![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
User1302 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.11.2010 Репутация: нет Всего: нет |
Здравствуйте, форумчане!
Пожалуйста, помогите разобраться. Не получается перерисовывать дерево. Дерево представляет собой группы связанных лиц. То есть: List<List<Person>>. Из главного узла могут удаляться группы List<Person>, а также из конкретной группы List<Person> могут быть удалены лица Person. Дерево строится из модели. Модель реализует TreeModel. Данные берутся из списка списков List<List<Person>>. Проблема: при удалении лица дерево совсем пропадает из контейнера. В модели дерева такие переменные: List<List<Person>> root - корневой узел, группа лиц List<Person> group, лицо Person p Уведомление слушателей происходит так:
Если вызываю метод TreeModelListener.treeStructureChanged(new TreeModelEvent(this, new Object[]{root})); - дерево перерисовывается, только сворачивается. Хочется, чтоб оставалось несвернутым. Вот полный рабочий код:
Заранее спасибо! |
||||
|
|||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
предполагает, что структура дерева меняется очень сильно, так что текущие раскрытые пути сохранять смысла нет. Можно попробовать вызывать не от root, а от изменяемого узла, тогда он обновит поддерево, а остальное оставит нетронутым. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
User1302 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.11.2010 Репутация: нет Всего: нет |
Пробовал вместо:
создавать событие так:
То есть нет от корневого узла root, а от узла, кот. изменяется - проблема та же. Думаю, что неверно формирую обьект события TreeModelEvent. Или, неверно реализую методы TreeModel. Буду искать.. |
||||||
|
|||||||
User1302 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.11.2010 Репутация: нет Всего: нет |
В нете ничего не могу найти пока
![]() Может кто ответит на вопрос, если я сформулирую его несколько иначе: Есть список внутри которого находятся обьекты. (В моем случае List<Person>). Этот список наполняется пускай таким-себе "менеджером лиц" (что-то вроде PersonManager). Я хочу построить из этого списка простенькое дерево такого вида: корневой узел - List, листы - Person. Проще всего сделать дерево с помощью модели, так удобно и логично. Теперь представим, что в логике программы менеджер лиц удаляет из списка лицо List<Person>.remove(person); Вот теперь нужно сказать об этом дереву, чтоб оно отцепило от себя один лист Person. Как это сделать правильно? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |