Spec-Zone.ru › OpenJDK 25

Интерфейс TreeModel

Все известные реализующие классы:
DefaultTreeModel
public interface TreeModel
Модель, используемая JTree.

JTree и связанные с ним классы широко используют TreePath для идентификации узлов в TreeModel. Если TreeModel возвращает один и тот же объект, согласно сравнению с помощью equals, для двух разных индексов одного родителя, то соответствующие объекты TreePath также будут считаться равными. Некоторые реализации могут предполагать, что если два TreePath равны, то они идентифицируют один и тот же узел. Несоблюдение этого условия может привести к проблемам при отрисовке и другим неожиданным результатам. Иными словами, если getChild для заданного родителя возвращает один и тот же объект (как определяется с помощью equals), могут возникнуть проблемы, поэтому рекомендуется этого избегать.

Аналогично, JTree и связанные с ним классы помещают TreePath в Map. Поэтому, если узел запрашивается дважды, возвращаемые значения должны быть равны (согласно методу equals) и иметь одинаковый hashCode.

Дополнительные сведения о моделях деревьев, включая пример пользовательской реализации, см. в разделе Как работать с деревьями в учебнике по Java.

См. также:
  • TreePath

Краткое описание методов

Модификатор и тип Метод Описание
void addTreeModelListener(TreeModelListener l)
Добавляет слушателя для TreeModelEvent, отправляемого после изменения дерева.
Object getChild(Object parent, int index)
Возвращает дочерний элемент parent с индексом index в массиве дочерних элементов родителя.
int getChildCount(Object parent)
Возвращает количество дочерних элементов parent.
int getIndexOfChild(Object parent, Object child)
Возвращает индекс дочернего элемента в родителе.
Object getRoot()
Возвращает корень дерева.
boolean isLeaf(Object node)
Возвращает true, если node является листом.
void removeTreeModelListener(TreeModelListener l)
Удаляет слушателя, ранее добавленного с помощью addTreeModelListener.
void valueForPathChanged(TreePath path, Object newValue)
Вызывается, когда пользователь изменил значение элемента, идентифицированного path, на newValue.

Подробное описание методов

getRoot

Object getRoot()
Возвращает корень дерева. Возвращает null только в том случае, если дерево не содержит узлов.
Возвращает:
корень дерева

getChild

Object getChild(Object parent, int index)
Возвращает дочерний элемент parent с индексом index в массиве дочерних элементов родителя. parent должен быть узлом, ранее полученным из этого источника данных. Если index является допустимым индексом для parent (то есть index >= 0 && index < getChildCount(parent), метод не должен возвращать null.
Параметры:
parent — узел дерева, полученный из этого источника данных
index — индекс возвращаемого дочернего элемента
Возвращает:
дочерний элемент parent с индексом index

getChildCount

int getChildCount(Object parent)
Возвращает количество дочерних элементов parent. Возвращает 0, если узел является листом или у него нет дочерних элементов. parent должен быть узлом, ранее полученным из этого источника данных.
Параметры:
parent — узел дерева, полученный из этого источника данных
Возвращает:
количество дочерних элементов узла parent

isLeaf

boolean isLeaf(Object node)
Возвращает true, если node является листом. Этот метод может вернуть false, даже если у node нет дочерних элементов. Например, каталог в файловой системе может не содержать файлов: узел, представляющий каталог, не является листом, но при этом у него нет дочерних элементов.
Параметры:
node — узел дерева, полученный из этого источника данных
Возвращает:
true, если node является листом

valueForPathChanged

void valueForPathChanged(TreePath path, Object newValue)
Вызывается, когда пользователь изменил значение элемента, идентифицированного path, на newValue. Если newValue обозначает действительно новое значение, модель должна отправить событие treeNodesChanged.
Параметры:
path — путь к узлу, значение которого изменил пользователь
newValue — новое значение из TreeCellEditor

getIndexOfChild

int getIndexOfChild(Object parent, Object child)
Возвращает индекс дочернего элемента в родителе. Если parent или child равен null, возвращает -1. Если parent или child не принадлежит этой модели дерева, возвращает -1.
Параметры:
parent — узел дерева, полученный из этого источника данных
child — интересующий нас узел
Возвращает:
индекс дочернего элемента в родителе или -1, если child или parent равны null либо не принадлежат этой модели дерева

addTreeModelListener

void addTreeModelListener(TreeModelListener l)
Добавляет слушателя для TreeModelEvent, отправляемого после изменения дерева.
Параметры:
l — добавляемый слушатель
См. также:
  • removeTreeModelListener(TreeModelListener)

removeTreeModelListener

void removeTreeModelListener(TreeModelListener l)
Удаляет слушателя, ранее добавленного с помощью addTreeModelListener.
Параметры:
l — удаляемый слушатель
См. также:
  • addTreeModelListener(TreeModelListener)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/tree/TreeModel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API