Spec-Zone.ru › OpenJavaFX 17

Класс TreeItem<T>

java.lang.Object
fx.scene.control.TreeItem<T>
Параметры типа:
T - тип свойства value внутри TreeItem.
Все реализуемые интерфейсы:
EventTarget
Прямые известные подклассы:
CheckBoxTreeItem
public class TreeItem<T>
extends Object
implements EventTarget
Модель для отдельного узла, обеспечивающего иерархию значений для элемента управления, такого как TreeView. Модель может быть реализована таким образом, чтобы значения загружались в память по мере необходимости.

Модель позволяет регистрировать слушателей, которые будут уведомлены об изменении количества элементов, их позиции или если сами значения изменятся. Обратите внимание, однако, что TreeItem не является узлом, и поэтому визуальные события не будут генерироваться для TreeItem. Для получения этих событий необходимо добавить соответствующие наблюдатели к экземплярам TreeCell (через пользовательский фабричный метод ячеек — см. документацию класса Cell для получения дополнительных сведений).

В простейшем случае экземпляры TreeItem могут быть созданы в памяти следующим образом:


 TreeItem<String> root = new TreeItem<String>("Root Node");
 root.setExpanded(true);
 root.getChildren().addAll(
     new TreeItem<String>("Item 1"),
     new TreeItem<String>("Item 2"),
     new TreeItem<String>("Item 3")
 );
 TreeView<String> treeView = new TreeView<String>(root);
 
Этот подход хорошо работает для простых древовидных структур или когда данные не являются чрезмерными (чтобы они могли легко поместиться в памяти). В ситуациях, когда размер древовидной структуры неизвестен (и, следовательно, потенциально огромен), есть возможность создавать экземпляры TreeItem по требованию, экономя память. Для демонстрации этого код ниже создаёт обозреватель файловой системы:

  private TreeView buildFileSystemBrowser() {
      TreeItem<File> root = createNode(new File("/"));
      return new TreeView<File>(root);
  }

  // This method creates a TreeItem to represent the given File. It does this
  // by overriding the TreeItem.getChildren() and TreeItem.isLeaf() methods
  // anonymously, but this could be better abstracted by creating a
  // 'FileTreeItem' subclass of TreeItem. However, this is left as an exercise
  // for the reader.
  private TreeItem<File> createNode(final File f) {
      return new TreeItem<File>(f) {
          // We cache whether the File is a leaf or not. A File is a leaf if
          // it is not a directory and does not have any files contained within
          // it. We cache this as isLeaf() is called often, and doing the
          // actual check on File is expensive.
          private boolean isLeaf;

          // We do the children and leaf testing only once, and then set these
          // booleans to false so that we do not check again during this
          // run. A more complete implementation may need to handle more
          // dynamic file system situations (such as where a folder has files
          // added after the TreeView is shown). Again, this is left as an
          // exercise for the reader.
          private boolean isFirstTimeChildren = true;
          private boolean isFirstTimeLeaf = true;

          @Override public ObservableList<TreeItem<File>> getChildren() {
              if (isFirstTimeChildren) {
                  isFirstTimeChildren = false;

                  // First getChildren() call, so we actually go off and
                  // determine the children of the File contained in this TreeItem.
                  super.getChildren().setAll(buildChildren(this));
              }
              return super.getChildren();
          }

          @Override public boolean isLeaf() {
              if (isFirstTimeLeaf) {
                  isFirstTimeLeaf = false;
                  File f = (File) getValue();
                  isLeaf = f.isFile();
              }

              return isLeaf;
          }

          private ObservableList<TreeItem<File>> buildChildren(TreeItem<File> TreeItem) {
              File f = TreeItem.getValue();
              if (f != null && f.isDirectory()) {
                  File[] files = f.listFiles();
                  if (files != null) {
                      ObservableList<TreeItem<File>> children = FXCollections.observableArrayList();

                      for (File childFile : files) {
                          children.add(createNode(childFile));
                      }

                      return children;
                  }
              }

              return FXCollections.emptyObservableList();
          }
      };
  }
События TreeItem

TreeItem поддерживает ту же концепцию распространения событий, что и в других частях сцены. Это означает, что нет необходимости прослушивать события на всех TreeItem (и это определенно не рекомендуется!). Лучшим и гораздо более эффективным решением является прикрепление слушателей событий к элементу TreeView root. Пока существует путь между местом возникновения события и корневым элементом TreeItem, событие будет распространяться к корневому элементу.

Важно отметить, что TreeItem не является узлом, что означает, что будут доставляться только типы событий, определенные в TreeItem. Чтобы прослушивать общие события (например, взаимодействия с мышкой), необходимо добавить необходимые слушатели к cells, содержащимся в TreeView (предоставив cell factory).

Класс TreeItem определяет ряд событий с определённой иерархией. Они показаны ниже (перейдите по ссылкам, чтобы узнать больше о каждом типе событий):

  • TreeItem.treeNotificationEvent()
    • TreeItem.valueChangedEvent()
    • TreeItem.graphicChangedEvent()
    • TreeItem.expandedItemCountChangeEvent()
      • TreeItem.branchExpandedEvent()
      • TreeItem.branchCollapsedEvent()
      • TreeItem.childrenModificationEvent()

Отступы, показанные выше, обозначают взаимосвязь между типами событий. Например, все типы событий TreeItem имеют treeNotificationEvent() в качестве родительского типа события, а типы событий ветвления expand / collapse оба являются treeNotificationEvent(). По соображениям производительности рекомендуется прослушивать только необходимые события. Это означает, что, например, лучше прослушивать TreeItem.valueChangedEvent(), а не TreeItem.treeNotificationEvent().

С момента:
JavaFX 2.0
См. также:
TreeView

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

Свойства
Тип Свойство Описание
BooleanProperty expanded
Состояние раскрытия этого TreeItem.
ObjectProperty<Node> graphic
Узел, который обычно отображается слева от свойства value.
ReadOnlyBooleanProperty leaf
Представляет свойство листа TreeItem, которое равно true, если у TreeItem нет дочерних элементов.
ReadOnlyObjectProperty<TreeItem<T>> parent
Свойство, которое представляет родительский элемент TreeItem.
ObjectProperty<T> value
Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом TreeItem.

Краткое описание вложенных классов

Вложенные классы
Модификатор и тип Класс Описание
static class  TreeItem.TreeModificationEvent<T>
An Event that contains relevant information for all forms of TreeItem modifications.

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

Конструкторы
Конструктор Описание
TreeItem()
Создаёт пустой TreeItem.
TreeItem​(T value)
Создаёт TreeItem со свойством value, установленным на предоставленный объект.
TreeItem​(T value, Node graphic)
Создаёт TreeItem со свойством value, установленным на предоставленный объект, и графическим элементом, установленным на предоставленный узел.

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

Модификатор и тип Метод Описание
<E extends Event>
void
addEventHandler​(EventType<E> eventType, EventHandler<E> eventHandler)
Регистрирует обработчик событий для данного TreeItem.
static <T> EventType<TreeItem.TreeModificationEvent<T>> branchCollapsedEvent()
Тип события, используемый, когда TreeItem получает изменение свойства expanded, в результате чего TreeItem находится в свёрнутом состоянии.
static <T> EventType<TreeItem.TreeModificationEvent<T>> branchExpandedEvent()
Тип события, используемый, когда TreeItem получает изменение свойства expanded, в результате чего TreeItem находится в развернутом состоянии.
static <T> EventType<TreeItem.TreeModificationEvent<T>> childrenModificationEvent()
Тип события, используемый, когда TreeItem получает прямое изменение списка дочерних элементов.
static <T> EventType<TreeItem.TreeModificationEvent<T>> expandedItemCountChangeEvent()
Общий тип события, используемый, когда TreeItem получает изменение, в результате которого изменяется количество видимых дочерних элементов.
BooleanProperty expandedProperty()
Состояние развернутости данного TreeItem.
ObservableList<TreeItem<T>> getChildren()
Дочерние элементы данного TreeItem.
Node getGraphic()
Возвращает узел, который обычно отображается слева от свойства value.
TreeItem<T> getParent()
Родитель данного TreeItem.
T getValue()
Возвращает данные, специфичные для приложения, представленные этим TreeItem.
static <T> EventType<TreeItem.TreeModificationEvent<T>> graphicChangedEvent()
Тип события, используемый, когда TreeItem получает изменение свойства graphic.
ObjectProperty<Node> graphicProperty()
Узел, который обычно отображается слева от свойства value.
boolean isExpanded()
Возвращает состояние развернутости данного TreeItem.
boolean isLeaf()
TreeItem является листом, если у него нет дочерних элементов.
ReadOnlyBooleanProperty leafProperty()
Представляет свойство leaf TreeItem, которое равно true, если у TreeItem нет дочерних элементов.
TreeItem<T> nextSibling()
Возвращает следующего брата данного TreeItem.
TreeItem<T> nextSibling​(TreeItem<T> afterNode)
Возвращает следующего брата после заданного узла.
ReadOnlyObjectProperty<TreeItem<T>> parentProperty()
Свойство, представляющее родителя этого TreeItem.
TreeItem<T> previousSibling()
Возвращает предыдущего брата данного TreeItem.
TreeItem<T> previousSibling​(TreeItem<T> beforeNode)
Возвращает предыдущего брата после заданного узла.
<E extends Event>
void
removeEventHandler​(EventType<E> eventType, EventHandler<E> eventHandler)
Отменяет ранее зарегистрированный обработчик событий из данного TreeItem.
void setExpanded​(boolean value)
Устанавливает состояние развернутости данного TreeItem.
void setGraphic​(Node value)
Устанавливает узел, который обычно отображается слева от свойства value.
void setValue​(T value)
Устанавливает данные, специфичные для приложения, представленные этим TreeItem.
String toString()
Возвращает строковое представление этого TreeItem объекта.
static <T> EventType<TreeItem.TreeModificationEvent<T>> treeNotificationEvent()
Основной тип события, используемый для указания того, что событие произошло внутри TreeItem.
static <T> EventType<TreeItem.TreeModificationEvent<T>> valueChangedEvent()
Тип события, используемый, когда TreeItem получает изменение свойства value.
ObjectProperty<T> valueProperty()
Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом TreeItem.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе javafx.event.EventTarget

buildEventDispatchChain

Подробности свойств

значение

public final ObjectProperty<T> valueProperty
Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом элементе дерева.
См. также:
getValue(), setValue(T)

график

public final ObjectProperty<Node> graphicProperty
Узел, который обычно отображается слева от свойства значения. Для лучшего эффекта, это, как правило, изображение размером 16x16.
См. также:
getGraphic(), setGraphic(Node)

расширенный

public final BooleanProperty expandedProperty
Состояние раскрытия этого элемента дерева.
См. также:
isExpanded(), setExpanded(boolean)

лист

public final ReadOnlyBooleanProperty leafProperty
Представляет свойство листа элемента дерева, которое равно true, если элемент дерева не имеет дочерних элементов.
См. также:
isLeaf()

родитель

public final ReadOnlyObjectProperty<TreeItem<T>> parentProperty
Свойство, представляющее родителя этого элемента дерева.
См. также:
getParent()

Подробности конструкторов

TreeItem

public TreeItem()
Создает пустой элемент дерева.

TreeItem

public TreeItem(T value)
Создает элемент дерева со свойством значения, установленным на предоставленный объект.
Параметры:
value - Объект, который будет храниться в качестве значения этого элемента дерева.

TreeItem

public TreeItem(T value, Node graphic)
Создает элемент дерева со свойством значения, установленным на предоставленный объект, и графиком, установленным на предоставленный узел.
Параметры:
value - Объект, который будет храниться в качестве значения этого элемента дерева.
graphic - Узел, который будет отображаться в TreeView рядом с этим элементом дерева.

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

treeNotificationEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> treeNotificationEvent()
Базовый EventType, используемый для указания того, что событие произошло внутри элемента дерева. Когда событие происходит в элементе дерева, событие генерируется для любых слушателей элемента дерева, в котором происходит событие, прежде чем оно «поднимется» по цепочке элементов дерева, следуя свойству родительского элемента дерева. Это повторяется до тех пор, пока не будет достигнут элемент дерева, родительским элементом которого является null. В этот момент событие перестает «подниматься» и не распространяется дальше. Это означает, что события, возникающие в элементе дерева, могут быть относительно недорогими, так как слушатель должен быть установлен только в корневом узле TreeView, чтобы быть проинформированным об событиях, происходящих в любой точке дерева.
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
базовый EventType, когда событие произошло внутри элемента дерева

expandedItemCountChangeEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> expandedItemCountChangeEvent()
Общий EventType, используемый, когда элемент дерева получает изменение, которое приводит к изменению видимого числа дочерних элементов. Обычно это достигается с помощью одного из подтипов этого EventType (см. branchExpandedEvent(), branchCollapsedEvent() и childrenModificationEvent() для трех подтипов).
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
Общий EventType, когда элемент дерева получает изменение
С тех пор:
JavaFX 8.0

branchExpandedEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> branchExpandedEvent()
EventType, используемый, когда элемент дерева получает изменение в его свойстве expanded, так что элемент дерева теперь в состоянии раскрытия.
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
EventType, используемый, когда элемент дерева получает изменение

branchCollapsedEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> branchCollapsedEvent()
EventType, используемый, когда элемент дерева получает изменение в его свойстве expanded, так что элемент дерева теперь в состоянии свернутости.
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
EventType, когда элемент дерева получает изменение

childrenModificationEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> childrenModificationEvent()
EventType, используемый, когда элемент дерева получает непосредственное изменение его списка дочерних элементов.
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
EventType, когда элемент дерева получает непосредственное изменение его списка дочерних элементов

valueChangedEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> valueChangedEvent()
EventType, используемый, когда элемент дерева получает изменение его свойства value.
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
EventType, когда элемент дерева получает изменение его свойства value

graphicChangedEvent

public static <T> EventType<TreeItem.TreeModificationEvent<T>> graphicChangedEvent()
EventType, используемый, когда элемент дерева получает изменение его свойства graphic.
Типы параметров:
T - Тип значения, содержащегося в элементе дерева.
Возвращает:
EventType, когда элемент дерева получает изменение его свойства graphic

setValue

public final void setValue(T value)
Устанавливает данные, специфичные для приложения, которые представляются этим элементом дерева.
Параметры:
value - данные, специфичные для приложения

getValue

public final T getValue()
Возвращает данные, специфичные для приложения, которые представляются этим элементом дерева.
Возвращает:
данные, представленные этим элементом дерева

valueProperty

public final ObjectProperty<T> valueProperty()
Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом элементе дерева.
См. также:
getValue(), setValue(T)

setGraphic

public final void setGraphic(Node value)
Устанавливает узел, который обычно отображается слева от свойства значения. Для лучшего эффекта, это, как правило, изображение размером 16x16.
Параметры:
value - узел графика, который будет отображаться пользователю.

getGraphic

public final Node getGraphic()
Возвращает узел, который обычно отображается слева от свойства значения. Для лучшего эффекта, это, как правило, изображение размером 16x16.
Возвращает:
узел графика, который будет отображаться пользователю.

graphicProperty

public final ObjectProperty<Node> graphicProperty()
Узел, который обычно отображается слева от свойства значения. Для лучшего эффекта, это, как правило, изображение размером 16x16.
См. также:
getGraphic(), setGraphic(Node)

setExpanded

public final void setExpanded(boolean value)
Устанавливает состояние раскрытия этого элемента дерева. Это не оказывает никакого эффекта на элемент дерева без дочерних элементов. Однако в элементе дерева с дочерними элементами результат переключения этого свойства заключается в том, что визуально дочерние элементы либо станут видимыми, либо скрытыми, в зависимости от того, установлено ли expanded в true или false.
Параметры:
value - Если у этого элемента дерева есть дочерние элементы, вызов setExpanded с true приведет к тому, что дочерние элементы станут видимыми. Вызов setExpanded с false скроет любые дочерние элементы, принадлежащие элементу дерева.

isExpanded

public final boolean isExpanded()
Возвращает состояние раскрытия этого элемента дерева.
Возвращает:
Возвращает состояние раскрытия этого элемента дерева.

expandedProperty

public final BooleanProperty expandedProperty()
Состояние раскрытия этого элемента дерева.
См. также:
isExpanded(), setExpanded(boolean)

isLeaf

public boolean isLeaf()
Элемент дерева является листом, если у него нет дочерних элементов. Метод isLeaf, конечно же, может быть переопределен подклассами для поддержки альтернативных способов определения того, как элемент дерева может быть листом, но общая предпосылка остается прежней: лист не может быть раскрыт пользователем и, таким образом, не будет отображать узел раскрытия или отвечать на запросы раскрытия.
Возвращает:
true, если у этого элемента дерева нет дочерних элементов

leafProperty

public final ReadOnlyBooleanProperty leafProperty()
Представляет свойство листа элемента дерева, которое равно true, если элемент дерева не имеет дочерних элементов.
См. также:
isLeaf()

getParent

public final TreeItem<T> getParent()
Родительский элемент этого TreeItem. Каждый TreeItem может иметь не более одного родителя. Если у TreeItem нет родителя, он представляет корень в модели дерева.
Возвращает:
Родительский элемент этого TreeItem, или null, если у TreeItem нет родителя.

parentProperty

public final ReadOnlyObjectProperty<TreeItem<T>> parentProperty()
Свойство, представляющее родителя этого TreeItem.
См. также:
getParent()

getChildren

public ObservableList<TreeItem<T>> getChildren()
Дочерние элементы этого TreeItem. Этот метод вызывается часто, поэтому рекомендуется, чтобы возвращаемый список кэшировался любыми реализациями TreeItem.
Возвращает:
список, содержащий дочерние TreeItem, принадлежащие TreeItem.

previousSibling

public TreeItem<T> previousSibling()
Возвращает предыдущего брата TreeItem. Порядок определяется положением TreeItem относительно его братьев в списке дочерних элементов, принадлежащих родителю TreeItem.
Возвращает:
TreeItem, являющийся предыдущим братом текущего TreeItem, или null, если такого брата найти не удалось.

previousSibling

public TreeItem<T> previousSibling(TreeItem<T> beforeNode)
Возвращает предыдущего брата после данного узла. Порядок определяется положением данного TreeItem относительно его братьев в списке дочерних элементов, принадлежащих родителю TreeItem.
Параметры:
beforeNode - TreeItem, для которого ищется предыдущий брат.
Возвращает:
TreeItem, являющийся предыдущим братом данного TreeItem, или null, если такого брата найти не удалось.

nextSibling

public TreeItem<T> nextSibling()
Возвращает следующего брата TreeItem. Порядок определяется положением TreeItem относительно его братьев в списке дочерних элементов, принадлежащих родителю TreeItem.
Возвращает:
TreeItem, являющийся следующим братом текущего TreeItem, или null, если такого брата найти не удалось.

nextSibling

public TreeItem<T> nextSibling(TreeItem<T> afterNode)
Возвращает следующего брата после данного узла. Порядок определяется положением данного TreeItem относительно его братьев в списке дочерних элементов, принадлежащих родителю TreeItem.
Параметры:
afterNode - TreeItem, для которого ищется следующий брат.
Возвращает:
TreeItem, являющийся следующим братом данного TreeItem, или null, если такого брата найти не удалось.

toString

public String toString()
Возвращает строковое представление этого TreeItem объекта.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого TreeItem объекта.

addEventHandler

public <E extends Event> void addEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
Регистрирует обработчик событий для этого TreeItem. Класс TreeItem позволяет регистрировать слушателей, которые будут уведомляться при изменении количества элементов, их позиции или при изменении самих значений. Однако обратите внимание, что TreeItem не является Node, и поэтому никакие визуальные события не будут генерироваться на TreeItem. Для получения этих событий необходимо добавить соответствующих наблюдателей к экземплярам TreeCell (через пользовательскую фабрику ячеек — см. документацию класса Cell для получения дополнительной информации).
Параметры типа:
E - событие
Параметры:
eventType - тип событий, которые должен получать обработчик
eventHandler - регистрируемый обработчик
Исключения:
NullPointerException - если тип события или обработчик равен null

removeEventHandler

public <E extends Event> void removeEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
Отменяет регистрацию ранее зарегистрированного обработчика событий из этого TreeItem. Один обработчик может быть зарегистрирован для разных типов событий, поэтому вызывающий код должен указать конкретный тип события, из которого следует удалить обработчик.
Параметры типа:
E - событие
Параметры:
eventType - тип события, из которого следует удалить обработчик
eventHandler - обработчик, который следует удалить
Исключения:
NullPointerException - если тип события или обработчик равен null

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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