Класс CheckBoxTreeCell<T>
- Type Parameters:
-
T- Тип элементов, содержащихся в экземплярах TreeItem TreeView.
- All Implemented Interfaces:
-
Styleable,EventTarget,Skinnable
public class CheckBoxTreeCell<T> extends TreeCell<T>
TreeCell, которая отображает узел CheckBox внутри ячейки, а также поддержку общих взаимодействий (подробнее обсуждается ниже). Для упрощения создания TreeView с CheckBox, предоставлен вспомогательный класс CheckBoxTreeItem. **Настоятельно** рекомендуется использовать этот класс, а не обычный класс TreeItem, при построении структуры дерева TreeView. Обратитесь к документации API CheckBoxTreeItem для примера того, как эти два класса можно объединить.
При использовании в TreeView ячейка CheckBoxCell отображается с CheckBox справа от узла раскрытия (т.е. стрелки). Элемент, хранящийся в TreeItem.getValue(), будет обработано StringConverter, и этот текст займет всё оставшееся горизонтальное пространство. Кроме того, с помощью CheckBoxTreeItem, TreeView автоматически обрабатывает ситуации, такие как:
- Нажатие на
CheckBoxрядом с элементом, имеющим дочерние элементы, приведет к тому, что все дочерние элементы также будут выбраны/отключены. - Нажатие на
CheckBoxрядом с элементом, имеющим родительский элемент, возможно, переключит состояние родителя. Например, если вы выберите один дочерний элемент, родительский элемент станет неопределённым (указывая на частичное выделение дочерних элементов). Если вы продолжите выбирать все дочерние элементы, родительский элемент также будет выбран. Это происходит рекурсивно, и все родительские узлы обновляются как ожидалось.
CheckBoxTreeItem нежелательно, необходимо вызвать один из конструкторов, где указан Callback, который может вернуть ObservableValue<Boolean> для экземпляра TreeItem. Это ObservableValue<Boolean> должно представлять логическое состояние данного TreeItem. Обратите внимание, что CheckBoxTreeCell отображает CheckBox «в режиме реального времени», то есть CheckBox всегда интерактивен и может быть непосредственно переключен пользователем. Это означает, что ячейке не нужно входить в состояние editing state (обычно пользователем двойным щелчком по ячейке). Побочным эффектом этого является то, что обычные обработчики редактирования (например, on edit commit) не будут вызываться. Если вы хотите получать уведомления об изменениях, рекомендуется напрямую наблюдать за логическими свойствами, которые изменяются с помощью CheckBox.
- Since:
- JavaFX 2.2
Краткое описание свойств
| Тип | Свойство | Описание |
|---|---|---|
final ObjectProperty |
converter |
Свойство StringConverter. |
final ObjectProperty |
selectedStateCallback |
Свойство, представляющее Callback, к которому привязана галочка CheckBox, отображаемая на экране. |
Свойства, объявленные в классе javafx.scene.control.TreeCell
disclosureNode, treeItem, treeView
Свойства, объявленные в классе javafx.scene.control.IndexedCell
index
Свойства, объявленные в классе javafx.scene.control.Labeled
alignment, contentDisplay, ellipsisString, font, graphic, graphicTextGap, labelPadding, lineSpacing, mnemonicParsing, textAlignment, textFill, textOverrun, text, textTruncated, underline, wrapText
Свойства, объявленные в классе javafx.scene.control.Control
contextMenu, skin, tooltip
Свойства, объявленные в классе javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
Свойства, объявленные в классе javafx.scene.Parent
needsLayout
Свойства, объявленные в классе javafx.scene.Node
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, focusVisible, focusWithin, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
Краткое описание полей
Поля, объявленные в классе javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
Поля, объявленные в классе javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
CheckBoxTreeCell() |
Создаёт по умолчанию CheckBoxTreeCell, предполагая, что TreeView построен с использованием экземпляров CheckBoxTreeItem, а не по умолчанию TreeItem. |
CheckBoxTreeCell |
Создаёт CheckBoxTreeCell для использования в элементе управления TreeView через фабрику ячеек. |
CheckBoxTreeCell |
Создаёт CheckBoxTreeCell для использования в элементе управления TreeView через фабрику ячеек. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final ObjectProperty |
converterProperty() |
Свойство StringConverter. |
static <T> Callback |
forTreeView() |
Создаёт фабрику ячеек для использования в элементе управления TreeView, хотя существуют важные предположения при использовании в TreeView: эта фабрика ячеек предполагает, что корень TreeView и все дочерние элементы являются экземплярами CheckBoxTreeItem, а не стандартным классом TreeItem, используемым обычно. |
static <T> Callback |
forTreeView |
Создаёт фабрику ячеек для использования в элементе управления TreeView. |
static <T> Callback |
forTreeView |
Создаёт фабрику ячеек для использования в элементе управления TreeView. |
final StringConverter |
getConverter() |
Возвращает используемый в этой ячейке StringConverter. |
final Callback |
getSelectedStateCallback() |
Возвращает Callback, к которому привязана галочка CheckBox, отображаемая на экране. |
final ObjectProperty |
selectedStateCallbackProperty() |
Свойство, представляющее Callback, к которому привязана галочка CheckBox, отображаемая на экране. |
final void |
setConverter |
Устанавливает используемый в этой ячейке StringConverter. |
final void |
setSelectedStateCallback |
Устанавливает Callback, к которому привязана галочка CheckBox, отображаемая на экране. |
void |
updateItem |
Метод updateItem не должен вызываться разработчиками, но он является лучшим методом для переопределения разработчиками, чтобы позволить им настроить визуальные элементы ячейки. |
Методы, объявленные в классе javafx.scene.control.TreeCell
disclosureNodeProperty, getDisclosureNode, getTreeItem, getTreeView, setDisclosureNode, treeItemProperty, treeViewProperty, updateTreeItem, updateTreeView
Методы, объявленные в классе javafx.scene.control.IndexedCell
getIndex, indexProperty, updateIndex
Методы, объявленные в классе javafx.scene.control.Cell
cancelEdit, commitEdit, editableProperty, editingProperty, emptyProperty, getInitialFocusTraversable, getItem, isEditable, isEditing, isEmpty, isItemChanged, isSelected, itemProperty, selectedProperty, setEditable, setItem, startEdit, updateSelected
Методы, объявленные в классе javafx.scene.control.Labeled
alignmentProperty, contentDisplayProperty, ellipsisStringProperty, fontProperty, getAlignment, getClassCssMetaData, getContentBias, getContentDisplay, getControlCssMetaData, getEllipsisString, getFont, getGraphic, getGraphicTextGap, getInitialAlignment, getLabelPadding, getLineSpacing, getText, getTextAlignment, getTextFill, getTextOverrun, graphicProperty, graphicTextGapProperty, isMnemonicParsing, isTextTruncated, isUnderline, isWrapText, labelPaddingProperty, lineSpacingProperty, mnemonicParsingProperty, setAlignment, setContentDisplay, setEllipsisString, setFont, setGraphic, setGraphicTextGap, setLineSpacing, setMnemonicParsing, setText, setTextAlignment, setTextFill, setTextOverrun, setUnderline, setWrapText, textAlignmentProperty, textFillProperty, textOverrunProperty, textProperty, textTruncatedProperty, underlineProperty, wrapTextProperty
Методы, объявленные в классе javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, contextMenuProperty, createDefaultSkin, getContextMenu, getCssMetaData, getSkin, getTooltip, isResizable, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
Методы, объявленные в классе javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computePrefHeight, computePrefWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty
Методы, объявленные в классе javafx.scene.Parent
getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, layoutChildren, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
Методы, объявленные в классе javafx.scene.Node
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, focusVisibleProperty, focusWithinProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isFocusVisible, isFocusWithin, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookup, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, queryAccessibleAttribute, relocate, removeEventFilter, removeEventHandler, requestFocus, requestFocusTraversal, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе javafx.css.Styleable
getStyleableNode
Подробное описание свойств
converter
public final ObjectProperty<StringConverter<TreeItem<T>>> converterProperty
StringConverter.- См. также:
selectedStateCallback
public final ObjectProperty<Callback<TreeItem<T>,ObservableValue<Boolean>>> selectedStateCallbackProperty
Callback, привязанное к элементу CheckBox, отображаемому на экране.- См. также:
Подробное описание конструкторов
CheckBoxTreeCell
public CheckBoxTreeCell()
CheckBoxTreeCell, предполагая, что TreeView построена с использованием экземпляров CheckBoxTreeItem, а не стандартных TreeItem. Используя CheckBoxTreeItem, она будет внутренне управлять состоянием выбора и неопределённости каждого элемента в дереве.CheckBoxTreeCell
public CheckBoxTreeCell(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty)
CheckBoxTreeCell для использования в элементе управления TreeView через фабрику ячеек. В отличие от CheckBoxTreeCell(), этот метод не предполагает, что все экземпляры TreeItem в TreeView являются CheckBoxTreeItem. Для вызова этого метода необходимо предоставить Callback, который, получив объект типа TreeItem<T>, вернёт значение ObservableValue<Boolean>, представляющее, выбран ли данный элемент. Это ObservableValue<Boolean> будет двунаправленно привязано (т.е. CheckBox в ячейке установит/сбросит это свойство в зависимости от взаимодействия пользователя, и CheckBox отобразит состояние ObservableValue<Boolean>, если оно изменится внешним образом).
Если элементы не являются экземплярами CheckBoxTreeItem, разработчик несёт ответственность за обновление состояния родительских и дочерних TreeItem. Это означает, что для данного TreeItem этот класс просто переключает предоставленное ObservableValue<Boolean>, и ничего больше. Конечно, эту функциональность можно реализовать внешним образом, добавив наблюдателей к ObservableValue<Boolean> и переключив состояние других свойств по мере необходимости.
- Параметры:
-
getSelectedProperty-Callback, возвращающийObservableValue<Boolean>, представляющее, выбран ли данный элемент.
CheckBoxTreeCell
public CheckBoxTreeCell(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty, StringConverter<TreeItem<T>> converter)
CheckBoxTreeCell для использования в элементе управления TreeView через фабрику ячеек. В отличие от CheckBoxTreeCell(), этот метод не предполагает, что все экземпляры TreeItem в TreeView являются CheckBoxTreeItem. Для вызова этого метода необходимо предоставить Callback, который, получив объект типа TreeItem<T>, вернёт значение ObservableValue<Boolean>, представляющее, выбран ли данный элемент. Это ObservableValue<Boolean> будет двунаправленно привязано (т.е. CheckBox в ячейке установит/сбросит это свойство в зависимости от взаимодействия пользователя, и CheckBox отобразит состояние ObservableValue<Boolean>, если оно изменится внешним образом).
Если элементы не являются экземплярами CheckBoxTreeItem, разработчик несёт ответственность за обновление состояния родительских и дочерних TreeItems. Это означает, что для данного TreeItem этот класс просто переключает предоставленное ObservableValue<Boolean>, и ничего больше. Конечно, эту функциональность можно реализовать внешним образом, добавив наблюдателей к ObservableValue<Boolean> и переключив состояние других свойств по мере необходимости.
- Параметры:
-
getSelectedProperty-Callback, возвращающийObservableValue<Boolean>, представляющее, выбран ли данный элемент. -
converter- StringConverter, преобразующий объект TreeItem<T> в строку для визуального отображения.
Подробное описание методов
forTreeView
public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView()
CheckBoxTreeItem, а не стандартного класса TreeItem, который обычно используется. При использовании в TreeView CheckBoxCell отображается с CheckBox справа от 'узла раскрытия' (т. е. стрелки). Затем для элемента, хранящегося в TreeItem.getValue(), вызывается StringConverter, и этот текст занимает всё оставшееся горизонтальное пространство. Кроме того, используя CheckBoxTreeItem, TreeView автоматически обрабатывает такие ситуации, как:
- Нажатие на
CheckBoxрядом с элементом, имеющим дочерние элементы, приведёт к выбору/отмене выбора всех дочерних элементов. - Нажатие на
CheckBoxрядом с элементом, имеющим родителя, возможно, переключит состояние родителя. Например, если вы выберете один дочерний элемент, родитель станет неопределённым (указывающим на частичный выбор дочерних элементов). Если вы продолжите выбирать все дочерние элементы, родитель также будет выбран. Это рекурсивно, и все родительские узлы обновляются как ожидалось.
К сожалению, из-за ограничений Java необходимо явно указывать преобразование при использовании этого метода. Например:
final TreeView<String> treeView = new TreeView<String>();
treeView.setCellFactory(CheckBoxCell.<String>forTreeView());
- Тип параметров:
-
T- Тип элементов, содержащихся в экземплярахCheckBoxTreeItem. - Возвращает:
Callback, возвращающий TreeCell, способный работать с типом элемента, содержащегося в корне TreeView и всех его дочерних элементах (рекурсивно).
forTreeView
public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty)
forTreeView(), этот метод не предполагает, что все экземпляры TreeItem в TreeView являются CheckBoxTreeItem. При использовании в TreeView CheckBoxCell отображается с CheckBox справа от 'узла раскрытия' (т. е. стрелки). Затем для элемента, хранящегося в TreeItem.getValue(), вызывается StringConverter, и этот текст занимает всё оставшееся горизонтальное пространство.
В отличие от forTreeView(), эта фабрика ячеек не обрабатывает обновление состояния родительских или дочерних TreeItem - она просто переключает предоставленное ObservableValue<Boolean>, и ничего больше. Конечно, эту функциональность можно реализовать внешним образом, добавив наблюдателей к ObservableValue<Boolean> и переключив состояние других свойств по мере необходимости.
- Тип параметров:
-
T- Тип элементов, содержащихся в экземплярахTreeItem. - Параметры:
-
getSelectedProperty-Callback, возвращающийObservableValue<Boolean>, представляющее, выбран ли данный элемент. ЭтоObservableValue<Boolean>будет двунаправленно привязано (т.е. CheckBox в ячейке установит/сбросит это свойство в зависимости от взаимодействия пользователя, и CheckBox отобразит состояниеObservableValue<Boolean>, если оно изменится внешним образом). - Возвращает:
Callback, возвращающий TreeCell, способный работать с типом элемента, содержащегося в корне TreeView и всех его дочерних элементах (рекурсивно).
forTreeView
public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView(Callback<TreeItem<T>,ObservableValue<Boolean>> getSelectedProperty, StringConverter<TreeItem<T>> converter)
forTreeView(), этот метод не предполагает, что все экземпляры TreeItem в TreeView являются CheckBoxTreeItem. При использовании в TreeView CheckBoxCell отображается с CheckBox справа от узла раскрытия (т.е. стрелки). Элемент, хранящийся в TreeItem.getValue(), затем будет обработан с помощью StringConverter, и этот текст займёт всё оставшееся горизонтальное пространство.
В отличие от forTreeView(), эта фабрика ячеек не обрабатывает обновление состояния родительских или дочерних TreeItem — она просто переключает предоставленное значение ObservableValue<Boolean>, и ничего больше. Конечно, эту функциональность можно реализовать внешне, добавив наблюдатели к ObservableValue<Boolean> и переключая состояние других свойств по мере необходимости.
- Type Parameters:
-
T- Тип элементов, содержащихся в экземплярахTreeItem. - Parameters:
-
getSelectedProperty- Callback, который, получив объект типа TreeItem<T>, вернёт значениеObservableValue<Boolean>, представляющее, выбран ли данный элемент. ЭтоObservableValue<Boolean>будет двунаправленно привязано (это означает, что CheckBox в ячейке будет устанавливать/снимать это свойство на основе взаимодействия пользователя, а CheckBox будет отражать состояниеObservableValue<Boolean>, если оно изменится внешне). -
converter- StringConverter, который, получив объект типа TreeItem<T>, вернёт строку, которая может использоваться для визуального представления объекта. По умолчанию вforTreeView(Callback)используется просто вызов .toString() для всех ненулевых элементов (и возвращается пустая строка в случае, если заданный элемент равен null). - Returns:
- A
Callback, который вернёт TreeCell, способную работать с типом элемента, содержащегося в корне TreeView и всех его потомках (рекурсивно).
converterProperty
public final ObjectProperty<StringConverter<TreeItem<T>>> converterProperty()
StringConverter.- Returns:
- свойство
StringConverter - See Also:
setConverter
public final void setConverter(StringConverter<TreeItem<T>> value)
StringConverter для использования в этой ячейке.- Parameters:
-
value-StringConverterдля использования в этой ячейке
getConverter
public final StringConverter<TreeItem<T>> getConverter()
StringConverter, используемый в этой ячейке.- Returns:
StringConverter, используемый в этой ячейке
selectedStateCallbackProperty
setSelectedStateCallback
getSelectedStateCallback
updateItem
public void updateItem(T item, boolean empty)
ListView, вызывать этот метод). Однако цель метода updateItem заключается в том, чтобы разработчики, при указании пользовательских фабрик ячеек (опять же, таких как ListView cell factory), могли переопределить метод updateItem, чтобы обеспечить полную настраиваемость ячейки. Крайне важно, чтобы подклассы Cell должным образом переопределяли метод updateItem, так как несоблюдение этого приведёт к проблемам, таким как пустые ячейки или ячейки с неожиданным содержимым.
protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setGraphic(null);
} else {
setText(item.toString());
}
}
Обратите внимание на два важных момента в этом примере кода:
- Мы вызываем метод super.updateItem(T, boolean). Если этого не сделать, свойства item и empty не устанавливаются должным образом, и у вас, вероятно, возникнут графические проблемы.
- Мы проверяем условие
empty, и если оно выполняется, мы устанавливаем свойства text и graphic в null. Если мы этого не сделаем, практически гарантировано, что конечные пользователи увидят графические артефакты в ячейках неожиданно.
- Parameters:
-
item- Новый элемент для ячейки. -
empty- true, если эта ячейка представляет данные из списка. Если false, то она не представляет каких-либо данных домена, а используется для отображения пустой строки.
© 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.