Spec-Zone.ru › OpenJavaFX 8
javafx.scene.control

Класс TreeItem<T>

java.lang.Object
  • javafx.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.treeItemCountChangeEvent()
      • TreeItem.branchExpandedEvent()
      • TreeItem.branchCollapsedEvent()
      • TreeItem.childrenModificationEvent()

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

С тех пор:

JavaFX 2.0

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

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

    Вложенные классы
    Модификатор и тип Класс и описание
    static class  TreeItem.TreeModificationEvent<T>
    Событие Event, содержащее релевантную информацию обо всех модификациях TreeItem.
  • Краткое описание конструкторов

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

    Все методыСтатические методыМетоды экземпляраКонкретные методы
    Модификатор и тип Метод и описание
    <E extends Event>
    void
    addEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
    Регистрирует обработчик событий для этого TreeItem.
    static <T> EventType<TreeItem.TreeModificationEvent<T>> branchCollapsedEvent()
    Тип события, используемый, когда TreeItem получает модификацию своего свойства расширенного состояния, при этом TreeItem теперь находится в свёрнутом состоянии.
    static <T> EventType<TreeItem.TreeModificationEvent<T>> branchExpandedEvent()
    Тип события, используемый, когда TreeItem получает модификацию своего свойства расширенного состояния, при этом TreeItem теперь находится в развернутом состоянии.
    EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
    Создаёт цепочку обработки событий для этого объекта-мишени.
    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()
    Возвращает узел, который обычно отображается слева от свойства значения.
    TreeItem<T> getParent()
    Родительский элемент этого TreeItem.
    T getValue()
    Возвращает данные, специфичные для приложения, представленные этим TreeItem.
    static <T> EventType<TreeItem.TreeModificationEvent<T>> graphicChangedEvent()
    Тип события, используемый, когда TreeItem получает модификацию своего свойства графики.
    ObjectProperty<Node> graphicProperty()
    Узел, который обычно отображается слева от свойства значения.
    boolean isExpanded()
    Возвращает расширенное состояние этого TreeItem.
    boolean isLeaf()
    TreeItem является листом, если у него нет дочерних элементов.
    ReadOnlyBooleanProperty leafProperty()
    Представляет свойство листа 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)
    Устанавливает узел, который обычно отображается слева от свойства значения.
    void setValue(T value)
    Устанавливает данные, специфичные для приложения, представленные этим TreeItem.
    String toString()
    Возвращает строковое представление этого TreeItem объекта.
    static <T> EventType<TreeItem.TreeModificationEvent<T>> treeNotificationEvent()
    Основной тип события, используемый для указания того, что событие произошло внутри TreeItem.
    static <T> EventType<TreeItem.TreeModificationEvent<T>> valueChangedEvent()
    Тип события, используемый, когда TreeItem получает модификацию своего свойства значения.
    ObjectProperty<T> valueProperty()
    Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом TreeItem.
    • Методы, унаследованные от класса java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Подробное описание свойств

    • value

      public final ObjectProperty<T> valueProperty
      Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом TreeItem.
    • graphic

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

      См. также:

      getGraphic(), setGraphic(Node)

    • expanded

      public final BooleanProperty expandedProperty
      Расширенное состояние этого TreeItem.

      См. также:

      isExpanded(), setExpanded(boolean)

    • leaf

      public final ReadOnlyBooleanProperty leafProperty
      Представляет свойство листа TreeItem, которое равно true, если у TreeItem нет дочерних элементов.

      См. также:

      isLeaf()

    • parent

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

      См. также:

      getParent()

  • Подробное описание конструкторов

    • TreeItem

      public TreeItem()
      Создаёт пустой TreeItem.
    • TreeItem

      public TreeItem(T value)
      Создаёт TreeItem со свойством значения, установленным на предоставленный объект.

      Параметры:

      value - Объект, который будет сохранён в качестве значения этого TreeItem.

    • TreeItem

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

      Параметры:

      value - Объект, который будет сохранён в качестве значения этого TreeItem.

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

    • treeNotificationEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

    • expandedItemCountChangeEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

      С тех пор как:

      JavaFX 8.0

    • branchExpandedEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

    • branchCollapsedEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

    • childrenModificationEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

    • valueChangedEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

    • graphicChangedEvent

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

      Параметры типа:

      T - тип значения, содержащегося в TreeItem.

    • setValue

      public final void setValue(T value)
      Устанавливает данные, специфичные для приложения, представленные этим TreeItem.
    • getValue

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

      Возвращает:

      данные, представленные этим TreeItem

    • valueProperty

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

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

      Параметры:

      value - узел графики, который будет отображаться пользователю.

    • getGraphic

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

      Возвращает:

      Узел графики, который будет отображаться пользователю.

    • graphicProperty

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

      См. также:

      getGraphic(), setGraphic(Node)

    • setExpanded

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

      Параметры:

      value - Если у этого TreeItem есть дочерние элементы, вызов setExpanded с true приведет к отображению дочерних элементов. Вызов setExpanded с false скроет любые дочерние элементы, принадлежащие TreeItem.

    • isExpanded

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

      Возвращает:

      Возвращает состояние раскрытия этого TreeItem.

    • expandedProperty

      public final BooleanProperty expandedProperty()
      Состояние раскрытия этого TreeItem.

      См. также:

      isExpanded(), setExpanded(boolean)

    • isLeaf

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

      public final ReadOnlyBooleanProperty leafProperty()
      Представляет свойство листа TreeItem, которое истинно, если у TreeItem нет дочерних элементов.

      См. также:

      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.

    • buildEventDispatchChain

      public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
      Строит цепочку обработки событий для этого объекта-цели. Цепочка обработки событий содержит диспетчеры событий, которые могут быть заинтересованы в обработке событий, направленных на этот объект-цель EventTarget. Эта цель события не добавляется автоматически в цепочку, поэтому, если она хочет обрабатывать события, ей необходимо добавить свой собственный диспетчер EventDispatcher в цепочку.

      В случае, если объект-цель является частью иерархии, цепочка для неё обычно строится из диспетчеров событий, собранных от корня иерархии до объекта-цели.

      Цепочка обработки событий строится путём модификаций предоставленной начальной цепочки обработки событий. Возвращаемая цепочка должна иметь начальную цепочку в конце, поэтому диспетчеры должны быть добавлены в начало начальной цепочки.

      Вызывающий метод не должен предполагать, что исходная цепочка остаётся неизменной или что возвращаемое значение будет ссылаться на другую цепочку.

      Определено в:

      buildEventDispatchChain в интерфейсе EventTarget

      Параметры:

      tail - начальная цепочка для построения

      Возвращает:

      результирующая цепочка обработки событий для этой цели

    • addEventHandler

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

      Параметры:

      eventType - тип событий, которые должен получать обработчик

      Исключения:

      NullPointerException - если тип события или обработчик равен null

    • removeEventHandler

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

      Параметры:

      eventType - тип события, из которого нужно удалить обработчик

      Исключения:

      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