![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| slip_stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Здравствуйте! Возникла такая проблема:
Есть своя написанная реализация TreeModel для хранения объектов некоторых классов (все реализуют один интерфейс). Классы эти уже написаны, и меняться не должны. Проблема в том, что в них не предусмотрено хранение в каком-либе виде ссылки на родителя в дереве. А манипуляции с деревом предполагают в том числе и удаление некоторых узлов (а без ссылки на родителя это, как я представляю, затруднительно). У меня есть некоторые идеи (типа полный перебор узлов дерева для поиска родителя заданного нода, или инкапсуляции объектов данных классов в другой класс уже с сохранением родителя), но как-то все это имхо похоже на code smell. Есть ли какой-нибудь простой и эффективный способ решить это? Заранее спасибо. |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
у DefaultTreeModel есть метод removeNodeFromParent(MutableTreeNode node)
или я что то не правильно понял? |
|||
|
||||
| slip_stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
У меня не DefaultTreeModel, а собственная реализация интерфейса TreeModel. И объекты, хранящиеся в ней, никак не относятся к MutableTreeNode.
|
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
||||
|
||||
| slip_stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
ClassCastException, естественно. MyModel и DefaultTreeModel - 2 потомка одного интерфейса с разной реализацией, какой смысл приводить тип от одного к другому?
|
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
||||
|
||||
| slip_stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Да ничего необычного в коде нет
Вот класс модели:
Expression - интерфейс с несколькими реализациями, объекты которых и должны быть в дереве. Поля parent ни в одной из этих реализаций нет, что наверное правильно, т.к. эти объекты используются не только в дереве, и не должны они знать, стали они вдруг узлом дерева или нет. |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
тогда надо делать рендерер с объектами Expression Это сообщение отредактировал(а) dorogoyIV - 1.2.2008, 18:30 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |