Класс 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() как свой родительский тип события, а типы событий разветвления expand / collapse являются treeNotificationEvent(). По соображениям производительности рекомендуется прослушивать только необходимые события. Это означает, что, например, лучше прослушивать TreeItem.valueChangedEvent(), чем TreeItem.treeNotificationEvent().
- С:
- JavaFX 2.0
- См. также:
Краткое описание свойств
| Тип | Свойство | Описание |
|---|---|---|
final BooleanProperty |
expanded |
Расширенное состояние этого TreeItem. |
final ObjectProperty<Node> |
graphic |
Узел, который обычно отображается слева от свойства value. |
final ReadOnlyBooleanProperty |
leaf |
Представляет свойство листа TreeItem, которое истинно, если у TreeItem нет дочерних элементов. |
final ReadOnlyObjectProperty<TreeItem<T>> |
parent |
Свойство, представляющее родительский элемент этого TreeItem. |
final ObjectProperty<T> |
value |
Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом TreeItem. |
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
TreeItem.TreeModificationEvent<T> |
Event, содержащий релевантную информацию обо всех формах модификаций TreeItem. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
TreeItem() |
Создаёт пустой TreeItem. |
TreeItem |
Создаёт TreeItem со свойством value, установленным на предоставленный объект. |
TreeItem |
Создаёт TreeItem со свойством value, установленным на предоставленный объект, и графическим элементом, установленным на предоставленный узел. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<E extends Event> |
addEventFilter |
Регистрирует фильтр событий для данного целевого объекта. |
<E extends Event> |
addEventHandler |
Регистрирует обработчик событий для данного целевого объекта. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
branchCollapsedEvent() |
Тип события, используемый, когда TreeItem получает модификацию свойства expanded, так что TreeItem теперь в свёрнутом состоянии. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
branchExpandedEvent() |
Тип события, используемый, когда TreeItem получает модификацию свойства expanded, так что TreeItem теперь в расширенном состоянии. |
EventDispatchChain |
buildEventDispatchChain |
Создаёт цепочку обработки событий для данного целевого объекта. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
childrenModificationEvent() |
Тип события, используемый, когда TreeItem получает прямую модификацию списка своих дочерних элементов. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
expandedItemCountChangeEvent() |
Общий тип события, используемый, когда TreeItem получает модификацию, которая приводит к изменению видимого числа дочерних элементов. |
final BooleanProperty |
expandedProperty() |
Расширенное состояние этого TreeItem. |
ObservableList<TreeItem<T>> |
getChildren() |
Дочерние элементы этого TreeItem. |
final Node |
getGraphic() |
Возвращает узел, который обычно отображается слева от свойства value. |
final TreeItem<T> |
getParent() |
Родительский элемент этого TreeItem. |
final T |
getValue() |
Возвращает данные, специфичные для приложения, представленные этим TreeItem. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
graphicChangedEvent() |
Тип события, используемый, когда TreeItem получает модификацию свойства graphic. |
final ObjectProperty<Node> |
graphicProperty() |
Узел, который обычно отображается слева от свойства value. |
final boolean |
isExpanded() |
Возвращает расширенное состояние этого TreeItem. |
boolean |
isLeaf() |
TreeItem является листом, если у него нет дочерних элементов. |
final ReadOnlyBooleanProperty |
leafProperty() |
Представляет свойство листа TreeItem, которое истинно, если у TreeItem нет дочерних элементов. |
TreeItem<T> |
nextSibling() |
Возвращает следующего брата TreeItem. |
TreeItem<T> |
nextSibling |
Возвращает следующего брата после заданного узла. |
final ReadOnlyObjectProperty<TreeItem<T>> |
parentProperty() |
Свойство, представляющее родительский элемент этого TreeItem. |
TreeItem<T> |
previousSibling() |
Возвращает предыдущего брата TreeItem. |
TreeItem<T> |
previousSibling |
Возвращает предыдущего брата после заданного узла. |
final void |
setExpanded |
Устанавливает расширенное состояние этого TreeItem. |
final void |
setGraphic |
Устанавливает узел, который обычно отображается слева от свойства value. |
final void |
setValue |
Устанавливает данные, специфичные для приложения, представленные этим TreeItem. |
String |
toString() |
Возвращает строковое представление этого TreeItem объекта. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
treeNotificationEvent() |
Базовый тип события, используемый для указания того, что событие произошло в TreeItem. |
static <T> EventType<TreeItem.TreeModificationEvent<T>> |
valueChangedEvent() |
Тип события, используемый, когда TreeItem получает модификацию своего свойства value. |
final ObjectProperty<T> |
valueProperty() |
Свойство, представляющее данные, специфичные для приложения, содержащиеся в этом TreeItem. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе javafx.event.EventTarget
removeEventFilter, removeEventHandler
Подробности свойств
значение
public final ObjectProperty<T> valueProperty
- См. также:
графика
public final ObjectProperty<Node> graphicProperty
- См. также:
развернуто
public final BooleanProperty expandedProperty
- См. также:
лист
public final ReadOnlyBooleanProperty leafProperty
- См. также:
родитель
public final ReadOnlyObjectProperty<TreeItem<T>> parentProperty
- См. также:
Подробности конструкторов
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()
- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- основной тип события, когда в элементе дерева произошло событие
expandedItemCountChangeEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> expandedItemCountChangeEvent()
branchExpandedEvent(), branchCollapsedEvent() и childrenModificationEvent() для трёх подтипов).- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- общий тип события, когда элемент дерева получает изменение
- С:
- JavaFX 8.0
branchExpandedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> branchExpandedEvent()
- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- Тип события, используемый, когда элемент дерева получает изменение
branchCollapsedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> branchCollapsedEvent()
- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- Тип события, когда элемент дерева получает изменение
childrenModificationEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> childrenModificationEvent()
- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- Тип события, когда элемент дерева получает непосредственное изменение его списка дочерних элементов
valueChangedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> valueChangedEvent()
- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- Тип события, когда элемент дерева получает изменение свойства значения
graphicChangedEvent
public static <T> EventType<TreeItem.TreeModificationEvent<T>> graphicChangedEvent()
- Параметры типа:
-
T- Тип значения, содержащегося в элементе дерева. - Возвращает:
- Тип события, когда элемент дерева получает изменение свойства графики
setValue
public final void setValue(T value)
- Параметры:
-
value- данные, специфичные для приложения
getValue
public final T getValue()
- Возвращает:
- данные, представленные этим элементом дерева
valueProperty
public final ObjectProperty<T> valueProperty()
- Возвращает:
- свойство, представляющее данные, специфичные для приложения, содержащиеся в этом элементе дерева
- См. также:
setGraphic
public final void setGraphic(Node value)
- Параметры:
-
value- Узел графики, который будет отображаться пользователю.
getGraphic
public final Node getGraphic()
- Возвращает:
- Узел графики, который будет отображаться пользователю.
graphicProperty
public final ObjectProperty<Node> graphicProperty()
- Возвращает:
- Узел, который обычно отображается слева от свойства значения
- См. также:
setExpanded
public final void setExpanded(boolean value)
- Параметры:
-
value- Если у этого элемента дерева есть дочерние элементы, вызов setExpanded сtrueприведет к тому, что дочерние элементы станут видимыми. Вызов setExpanded сfalseскроет любые дочерние элементы, принадлежащие элементу дерева.
isExpanded
public final boolean isExpanded()
- Возвращает:
- Возвращает состояние развернутости этого элемента дерева.
expandedProperty
public final BooleanProperty expandedProperty()
- Возвращает:
- Свойство состояния развернутости этого элемента дерева
- См. также:
isLeaf
public boolean isLeaf()
- Возвращает:
- true, если у этого элемента дерева нет дочерних элементов
leafProperty
public final ReadOnlyBooleanProperty leafProperty()
- Возвращает:
- свойство листа элемента дерева
- См. также:
getParent
public final TreeItem<T> getParent()
- Возвращает:
- Родитель этого элемента дерева или null, если у элемента дерева нет родителя.
parentProperty
public final ReadOnlyObjectProperty<TreeItem<T>> parentProperty()
- Возвращает:
- свойство родителя этого элемента дерева
- См. также:
getChildren
public ObservableList<TreeItem<T>> getChildren()
- Возвращает:
- список, содержащий дочерние элементы дерева, принадлежащие элементу дерева.
previousSibling
public TreeItem<T> previousSibling()
- Возвращает:
- Элемент дерева, являющийся предыдущим братом текущего элемента дерева, или null, если такой брат не найден.
previousSibling
public TreeItem<T> previousSibling(TreeItem<T> beforeNode)
- Параметры:
-
beforeNode- Элемент дерева, для которого ищется предыдущий брат. - Возвращает:
- Элемент дерева, являющийся предыдущим братом заданного элемента дерева, или null, если такой брат не найден.
nextSibling
public TreeItem<T> nextSibling()
- Возвращает:
- Элемент дерева, являющийся следующим братом текущего элемента дерева, или null, если такой брат не найден.
nextSibling
public TreeItem<T> nextSibling(TreeItem<T> afterNode)
- Параметры:
-
afterNode- Элемент дерева, для которого ищется следующий брат. - Возвращает:
- Элемент дерева, являющийся следующим братом заданного элемента дерева, или null, если такой брат не найден.
toString
public String toString()
TreeItem объекта.- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого
TreeItemобъекта.
buildEventDispatchChain
public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
EventTargetEventTarget. Этот целевой объект события не добавляется в цепочку автоматически, поэтому, если он хочет обрабатывать события, ему необходимо добавить EventDispatcher для себя в цепочку. В случае, если целевой объект события является частью иерархии, цепочка для него обычно строится из диспетчеров событий, собранных с корня иерархии до целевого объекта события.
Цепочка распространения событий строится путем модификации предоставленной начальной цепочки распространения событий. Возвращаемая цепочка должна иметь начальную цепочку в конце, поэтому диспетчеры должны быть добавлены в начало начальной цепочки.
Вызывающий код не должен предполагать, что начальная цепочка остается неизменной, ни то, что возвращаемое значение будет ссылаться на другую цепочку.
- Определено в:
-
buildEventDispatchChainв интерфейсеEventTarget - Параметры:
-
tail- начальная цепочка для построения - Возвращает:
- результирующая цепочка распространения событий для этого целевого объекта
addEventHandler
public <E extends Event> void addEventHandler(EventType<E> eventType, EventHandler<? super E> eventHandler)
Обработчик вызывается, когда целевой объект получает Event указанного типа во время фазы всплытия доставки события.
Класс TreeItem позволяет регистрировать слушателей, которые будут уведомляться при изменении количества элементов, их позиции или при изменении самих значений. Обратите внимание, что TreeItem не является Node, и поэтому визуальные события на нём не будут генерироваться. Для получения этих событий необходимо добавить соответствующих наблюдателей к экземплярам TreeCell через пользовательский фабрику ячеек (см. документацию класса Cell для получения более подробной информации).
- Определено в:
-
addEventHandlerв интерфейсеEventTarget - Параметры типа:
-
E- класс события обработчика - Параметры:
-
eventType- тип событий, получаемых обработчиком -
eventHandler- обработчик событий
addEventFilter
public <E extends Event> void addEventFilter(EventType<E> eventType, EventHandler<? super E> eventHandler)
Фильтр вызывается, когда целевой объект получает Event указанного типа во время фазы захвата доставки события.
Класс TreeItem позволяет регистрировать слушателей, которые будут уведомляться при изменении количества элементов, их позиции или при изменении самих значений. Обратите внимание, что TreeItem не является Node, и поэтому визуальные события на нём не будут генерироваться. Для получения этих событий необходимо добавить соответствующих наблюдателей к экземплярам TreeCell через пользовательский фабрику ячеек (см. документацию класса Cell для получения более подробной информации).
- Определено в:
-
addEventFilterв интерфейсеEventTarget - Параметры типа:
-
E- класс события фильтра - Параметры:
-
eventType- тип событий, получаемых фильтром -
eventHandler- фильтр событий
© 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.