isRoot () в DefaultMutableTreeNode

Почему в DefaultMutableTreeNode есть функция isRoot ()? Я спрашиваю, потому что у меня есть класс, расширяющий DefaultMutableTreeNode. Я хотел бы иметь возможность использовать один экземпляр этого класса в нескольких разных объектах JTree. Однако может показаться, что isRoot () - это вопрос, который я должен задать самому объекту дерева. Может ли кто-нибудь дать представление о том, почему эта функция существует на уровне узла, а не на уровне дерева?


person user3058135    schedule 24.07.2014    source источник
comment
Он должен существовать на уровне узла, потому что он явно проверяет, является ли этот узел корневым или нет. Вместо того, чтобы полагаться на внешний метод, где вы должны передать Node в качестве аргумента, чтобы решить, является ли он корнем или нет.   -  person gtgaxiola    schedule 24.07.2014
comment
Ну, чтобы продолжить мой вопрос, что происходит, когда узел НЕ является корнем в одном дереве, а является корнем в другом дереве?   -  person user3058135    schedule 24.07.2014
comment
Затем вы успешно допустили ошибку программирования, поделив узел в двух отдельных деревьях.   -  person Kayaman    schedule 24.07.2014
comment
Вы хотите поделиться ДАННЫМИ в узле, а не самой структурой узла. Пусть каждое дерево обрабатывает свою собственную структуру узла   -  person gtgaxiola    schedule 24.07.2014
comment
Если один и тот же узел находится в двух разных деревьях на разных уровнях, его метод getParent() не может вернуть правильное значение.   -  person VGR    schedule 24.07.2014
comment
Понятно. Думаю, я знаю, что мне теперь делать. Спасибо вам обоим!   -  person user3058135    schedule 24.07.2014


Ответы (1)


Объект дерева не может быть корнем дерева; объект JTree не является узлом.

DefaultMutableTreeNode разработан для облегчения рекурсивного обхода дерева. Поскольку рекурсивный метод, обрабатывающий дерево, будет иметь доступ только к одному узлу (и его последующим узлам) за раз, единственный способ для метода различить корень дерева - это для узлов, чтобы они по отдельности отслеживали, действительно ли они корень дерева.

person Maura    schedule 24.07.2014