- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- javafx.scene.control.TreeView<T>
-
- 参数类型
-
T
- 此TreeView中所有树项目的TreeItem
值属性中包含的项目的类型。
- All Implemented Interfaces:
-
Styleable
,EventTarget
,Skinnable
@DefaultProperty("root") public class TreeView<T> extends Control
TreeView控件提供了一个到根的视图(TreeItem
型)。 通过使用TreeView,可以递归地向下钻取TreeItem的子对象,直到TreeItem没有子节点(即树中的叶节点)。 为了推动这项工作,不像在控制ListView
,在TreeView中有必要只指定root
节点。有关使用此方法构建树的更多信息,请参阅
TreeItem
类文档。 但是简单地说,要创建一个TreeView,你应该按照以下几点做一些事情: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);
一个TreeView可以被配置为可选地由设置隐藏根节点
showRoot
属性false
。 如果根节点被隐藏,则减少一个级别的缩进,并显示根节点的所有子节点。 默认情况下,根节点显示在TreeView中。TreeView Selection / Focus API
要跟踪选择和重点,有必要熟悉
SelectionModel
和FocusModel
课程。 TreeView最多只有一个这些类的一个实例,分别可从selectionModel
和focusModel
属性获得。 虽然可以使用此API来设置新的选择模型,但在大多数情况下,这不是必需的 - 默认选择和焦点模型应该在大多数情况下工作。在实例化TreeView时使用的默认值为
SelectionModel
是MultipleSelectionModel
抽象类的实现。 但是,如selectionMode
属性的API文档中所述,默认值为SelectionMode.SINGLE
。 要在默认的TreeView实例中启用多个选择,因此需要执行以下操作:treeView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
自定义TreeView视觉
TreeView的视觉效果可以通过替换默认的
cell factory
完全自定义。 一个单元格工厂用于生成TreeCell
个实例,用于表示TreeView中的一个项目。 有关如何编写自定义单元格的更完整的说明,请参阅Cell
类文档。编辑
此控件支持值的内联编辑,本节尝试概述可用的API以及如何使用它们。
首先,细胞编辑通常需要不同于不编辑细胞的用户界面。 这是正在使用的
Cell
实现的责任。 对于TreeView,这是cell factory
的责任。 您可以选择单元格是否永久处于编辑状态(例如,这对于CheckBox
单元格来说是常见的),或者在编辑开始时切换到不同的UI(例如,当单元格上接收到双击时)。要知道在单元格上请求编辑时,只需覆盖
Cell.startEdit()
方法,并根据需要更新单元格text
和graphic
属性(例如,将文本设置为空,并将图形设置为TextField
)。 此外,您还应该覆盖Cell.cancelEdit()
,以便在编辑结束时将UI重置为原始的可视状态。 在这两种情况下,重要的是您还要确保您调用超级方法以使单元格执行所有必须执行的任务,以进入或退出其编辑模式。一旦您的单元格处于编辑状态,您最感兴趣的下一件事就是如何提交或取消正在进行的编辑。 这是您作为电池厂商的责任。 您的单元实现将基于用户输入(例如当用户按下键盘上的Enter键或ESC键时)知道编辑结束。 发生这种情况时,您有责任酌情致电
Cell.commitEdit(Object)
或Cell.cancelEdit()
。当您调用
Cell.commitEdit(Object)
事件触发到TreeView,您可以通过setOnEditCommit(javafx.event.EventHandler)
添加一个EventHandler
来观察 。 同样,您也可以观察edit start
和edit cancel
的编辑事件。默认情况下,TreeView编辑提交处理程序是非空的,默认处理程序会尝试覆盖当前正在编辑的行中的项目的属性值。 它可以做到这一点,因为
Cell.commitEdit(Object)
方法传递给新的值,并且这被传递给编辑提交处理程序通过TreeView.EditEvent
被触发。 只需调用TreeView.EditEvent.getNewValue()
即可检索该值。需要注意的是,如果你把它是非常重要的
setOnEditCommit(javafx.event.EventHandler)
用自己EventHandler
,那么你会删除默认的处理程序。 除非您再处理该属性(或相关数据源)的回写,否则不会发生任何事情。 您可以通过使用Node.addEventHandler(javafx.event.EventType, javafx.event.EventHandler)
方法添加一个EDIT_COMMIT_EVENT
EventType
与您所需的EventHandler
作为第二个参数。 使用此方法,您将不会替换默认实现,但在发生编辑提交时会收到通知。希望这个总结回答了一些常见问题。 幸运的是,JavaFX附带了许多预先构建的单元格工厂,可以代表您处理所有的编辑要求。 您可以在javafx.scene.control.cell包中找到这些预构建的单元工厂。
-
-
Property Summary
-
Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltip
-
Properties inherited from class javafx.scene.Node
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, 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
-
Properties inherited from class javafx.scene.Parent
needsLayout
-
Properties inherited from class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
TreeView.EditEvent<T>
一个Event
在TreeView中专门用于表示编辑相关事件的子类。
-
Field Summary
-
Fields inherited from class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
Fields inherited from class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 ObjectProperty<Callback<TreeView<T>,TreeCell<T>>>
cellFactoryProperty()
表示将用于创建TreeCells的单元格工厂,用于表示TreeView中的项目。protected Skin<?>
createDefaultSkin()
为此控件创建一个新的默认皮肤实例。void
edit(TreeItem<T> item)
指示TreeView开始编辑给定的TreeItem,如果TreeView是editable
。BooleanProperty
editableProperty()
指定此TreeView是否可编辑 - 只有当TreeView和TreeCells都可编辑时,TreeCell才能进入编辑状态。static <T> EventType<TreeView.EditEvent<T>>
editAnyEvent()
指示发生一些编辑事件的EventType。static <T> EventType<TreeView.EditEvent<T>>
editCancelEvent()
EventType用于指示事件被触发的TreeView中刚刚取消了编辑事件。static <T> EventType<TreeView.EditEvent<T>>
editCommitEvent()
用于指示TreeView中的编辑已提交的EventType。ReadOnlyObjectProperty<TreeItem<T>>
editingItemProperty()
用于表示当前在TreeView中编辑的TreeItem的属性,如果正在进行编辑,或者如果没有编辑任何项目,则为null。static <T> EventType<TreeView.EditEvent<T>>
editStartEvent()
EventType用于指示在事件触发的TreeView中启动了编辑事件。ReadOnlyIntegerProperty
expandedItemCountProperty()
表示当前能够在TreeView中可见的树节点数。DoubleProperty
fixedCellSizeProperty()
指定此控件是否具有固定高度(指定值)的单元格。ObjectProperty<FocusModel<TreeItem<T>>>
focusModelProperty()
FocusModel提供API,通过它可以将焦点控制在零行或一行TreeView。Callback<TreeView<T>,TreeCell<T>>
getCellFactory()
返回用于创建TreeCells的单元格工厂,用于表示TreeView中的项目,如果未设置自定义单元格工厂,则返回null。static List<CssMetaData<? extends Styleable,?>>
getClassCssMetaData()
List<CssMetaData<? extends Styleable,?>>
getControlCssMetaData()
TreeItem<T>
getEditingItem()
返回TreeView中当前正在编辑的TreeItem,如果没有编辑任何项目,则返回null。int
getExpandedItemCount()
获取属性expandedItemCount的值。double
getFixedCellSize()
返回固定的单元格大小值。FocusModel<TreeItem<T>>
getFocusModel()
返回当前安装的FocusModel
。static int
getNodeLevel(TreeItem<?> node)
已过时。此方法无法正确计算从给定TreeItem到TreeView根的距离。 从JavaFX 8.0_20开始,正确的方法是通过getTreeItemLevel(TreeItem)
EventHandler<TreeView.EditEvent<T>>
getOnEditCancel()
返回当用户取消编辑时将被调用的EventHandler
。EventHandler<TreeView.EditEvent<T>>
getOnEditCommit()
返回当用户提交编辑时将被调用的EventHandler
。EventHandler<TreeView.EditEvent<T>>
getOnEditStart()
返回当用户开始编辑时将被调用的EventHandler
。EventHandler<ScrollToEvent<Integer>>
getOnScrollTo()
获取属性onScrollTo的值。TreeItem<T>
getRoot()
返回此TreeView的当前根节点,如果未指定根节点,则返回null。int
getRow(TreeItem<T> item)
返回给定TreeItem的索引位置,假设它目前可通过树层次结构访问(最显着的是所有父树项目都被扩展)。MultipleSelectionModel<TreeItem<T>>
getSelectionModel()
返回当前安装的选择模型。TreeItem<T>
getTreeItem(int row)
返回给定索引中的TreeItem,如果超出范围则返回null。int
getTreeItemLevel(TreeItem<?> node)
根据getParent()可以递归调用的次数,返回给定TreeItem的“缩进”级别数。boolean
isEditable()
获取可编辑属性的值。boolean
isShowRoot()
如果应该显示TreeView的根,则返回true,否则返回false。protected void
layoutChildren()
在布局传递期间调用这个Parent
的孩子进行布局。ObjectProperty<EventHandler<TreeView.EditEvent<T>>>
onEditCancelProperty()
当用户取消编辑单元格时,将触发此事件处理程序。ObjectProperty<EventHandler<TreeView.EditEvent<T>>>
onEditCommitProperty()
当用户执行应导致其编辑输入持久化的操作时,将使用此属性。ObjectProperty<EventHandler<TreeView.EditEvent<T>>>
onEditStartProperty()
当用户成功启动编辑时,会触发此事件处理程序。ObjectProperty<EventHandler<ScrollToEvent<Integer>>>
onScrollToProperty()
当有请求使用scrollTo(int)
将索引滚动到视图时 调用Object
queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
该方法由辅助技术调用以请求属性的值。void
refresh()
调用refresh()
强制TreeView控件重新创建并重新填充填充控件的可视边界所需的单元格。ObjectProperty<TreeItem<T>>
rootProperty()
表示TreeView根节点的属性。void
scrollTo(int index)
滚动TreeView,使给定索引中的项目对最终用户可见。ObjectProperty<MultipleSelectionModel<TreeItem<T>>>
selectionModelProperty()
SelectionModel提供了可以在TreeView中选择单个或多个项目的API,以及检查用户选择了哪些行。void
setCellFactory(Callback<TreeView<T>,TreeCell<T>> value)
设置将用于创建TreeCells的单元格工厂,用于表示TreeView中的项目。void
setEditable(boolean value)
设置属性可编辑的值。void
setFixedCellSize(double value)
设置此控件的新固定单元格大小。void
setFocusModel(FocusModel<TreeItem<T>> value)
设置要在TreeView中使用的FocusModel
。void
setOnEditCancel(EventHandler<TreeView.EditEvent<T>> value)
设置当用户取消编辑时将被调用的EventHandler
。void
setOnEditCommit(EventHandler<TreeView.EditEvent<T>> value)
设置当用户提交编辑时将被调用的EventHandler
。void
setOnEditStart(EventHandler<TreeView.EditEvent<T>> value)
设置当用户开始编辑时将被调用的EventHandler
。void
setOnScrollTo(EventHandler<ScrollToEvent<Integer>> value)
设置属性onScrollTo的值。void
setRoot(TreeItem<T> value)
设置此TreeView中的根节点。void
setSelectionModel(MultipleSelectionModel<TreeItem<T>> value)
设置要在TreeView中使用的MultipleSelectionModel
。void
setShowRoot(boolean value)
指定是否应在此TreeView中显示根TreeItem
根。BooleanProperty
showRootProperty()
表示TreeView根节点是否可见的属性。-
Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getContextMenu, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
-
Methods inherited from class 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, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, 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, 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, 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, relocate, removeEventFilter, removeEventHandler, requestFocus, 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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
-
Methods inherited from class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, 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
-
Methods inherited from interface javafx.css.Styleable
getStyleableNode
-
-
-
-
Property Detail
-
cellFactory
public final ObjectProperty<Callback<TreeView<T>,TreeCell<T>>> cellFactoryProperty
表示将用于创建TreeCells的单元格工厂,用于表示TreeView中的项目。- 结果
- 电池厂属性
-
root
public final ObjectProperty<TreeItem<T>> rootProperty
表示TreeView根节点的属性。- 另请参见:
-
getRoot()
,setRoot(TreeItem)
-
showRoot
public final BooleanProperty showRootProperty
表示TreeView根节点是否可见的属性。- 另请参见:
-
isShowRoot()
,setShowRoot(boolean)
-
selectionModel
public final ObjectProperty<MultipleSelectionModel<TreeItem<T>>> selectionModelProperty
SelectionModel提供了可以在TreeView中选择单个或多个项目的API,以及检查用户选择了哪些行。 请注意,它有一个通用类型,必须与TreeView本身的类型相匹配。
-
focusModel
public final ObjectProperty<FocusModel<TreeItem<T>>> focusModelProperty
FocusModel提供API,通过它可以将焦点控制在零行或一行TreeView。 通常默认的实现应该是足够的。
-
expandedItemCount
public final ReadOnlyIntegerProperty expandedItemCountProperty
表示当前能够在TreeView中可见的树节点数。 这实质上是所有扩展的树项目及其子项的计数。
例如,如果只有根节点可见,则expandItemCount将为1。 如果根有三个孩子并且根被扩大,那么这个值将是四个。
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getExpandedItemCount()
-
fixedCellSize
public final DoubleProperty fixedCellSizeProperty
指定此控件是否具有固定高度(指定值)的单元格。 如果该值小于或等于零,则所有单元格都被单独设置和定位。 这是一个缓慢的操作。 因此,当性能重要且开发人员不依赖于可变单元大小时,设置固定单元大小值是一个好主意。 一般情况下,单元格大约为24像素,因此设置固定的单元格大小为24可能导致视觉差异很小,但性能有所改善。要通过CSS设置此属性,请使用-fx-fixed-cell-size属性。 这不应该与-fx-cell-size属性混淆。 这两个CSS属性之间的区别是-fx-cell-size将所有单元格的大小设置为指定的大小,但不会强制这是唯一的大小(从而允许变量单元大小,并且阻止性能提升可能)。 因此,当性能很重要的时候使用-fx-fixed-cell-size,而不是-fx-cell-size。 如果在CSS中指定了两个属性,则-fx-fixed-cell-size优先。
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getFixedCellSize()
,setFixedCellSize(double)
-
editable
public final BooleanProperty editableProperty
指定此TreeView是否可编辑 - 只有当TreeView和TreeCells都可编辑时,TreeCell才能进入编辑状态。- 另请参见:
-
isEditable()
,setEditable(boolean)
-
editingItem
public final ReadOnlyObjectProperty<TreeItem<T>> editingItemProperty
用于表示当前在TreeView中编辑的TreeItem的属性,如果正在进行编辑,或者如果没有编辑任何项目,则为null。
不可能设置编辑项,而需要调用
edit(javafx.scene.control.TreeItem)
。- 另请参见:
-
getEditingItem()
-
onEditStart
public final ObjectProperty<EventHandler<TreeView.EditEvent<T>>> onEditStartProperty
当用户成功启动编辑时,会触发此事件处理程序。
-
onEditCommit
public final ObjectProperty<EventHandler<TreeView.EditEvent<T>>> onEditCommitProperty
当用户执行应导致其编辑输入持久化的操作时,将使用此属性。
此属性中的EventHandler不应该直接调用, 而是从您的自定义TreeCell中调用
TreeCell.commitEdit(java.lang.Object)
。 这将处理触发此事件,更新视图和切换编辑状态。
-
onEditCancel
public final ObjectProperty<EventHandler<TreeView.EditEvent<T>>> onEditCancelProperty
当用户取消编辑单元格时,将触发此事件处理程序。
-
onScrollTo
public ObjectProperty<EventHandler<ScrollToEvent<Integer>>> onScrollToProperty
当有请求使用scrollTo(int)
将索引滚动到视图时 调用- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getOnScrollTo()
,setOnScrollTo(EventHandler)
-
-
方法详细信息
-
editAnyEvent
public static <T> EventType<TreeView.EditEvent<T>> editAnyEvent()
指示发生一些编辑事件的EventType。 这是所有其他编辑的事件父类型:editStartEvent()
,editCommitEvent()
和editCancelEvent()
。- 参数类型
-
T
- 此TreeView中使用的TreeItem实例的类型 - 结果
- 指示发生一些编辑事件的EventType。
-
editStartEvent
public static <T> EventType<TreeView.EditEvent<T>> editStartEvent()
EventType用于指示在事件触发的TreeView中启动了编辑事件。- 参数类型
-
T
- 此TreeView中使用的TreeItem实例的类型 - 结果
- 用于指示编辑事件已启动的EventType。
-
editCancelEvent
public static <T> EventType<TreeView.EditEvent<T>> editCancelEvent()
EventType用于指示事件被触发的TreeView中刚刚取消了编辑事件。- 参数类型
-
T
- 此TreeView中使用的TreeItem实例的类型 - 结果
- 用于指示编辑事件刚刚被取消的EventType。
-
editCommitEvent
public static <T> EventType<TreeView.EditEvent<T>> editCommitEvent()
用于指示TreeView中的编辑已提交的EventType。 这意味着用户对TreeItem的数据进行了更改,UI应该被更新。- 参数类型
-
T
- 此TreeView中使用的TreeItem实例的类型 - 结果
- 用于指示TreeView中的编辑已提交的EventType。
-
getNodeLevel
@Deprecated(since="8u20") public static int getNodeLevel(TreeItem<?> node)
返回给定TreeItem的“缩进”级别数,基于可以递归调用的次数TreeItem.getParent()
。 如果TreeItem没有任何父集,则返回的值将为零。 对于每次递归调用getParent(),返回的值都将增加1。重要注意事项:此方法已被弃用,因为它不考虑根节点。 这意味着如果根节点有父节点,则此方法将遍历TreeView控件的根节点。 如果这很重要,请拨打
getTreeItemLevel(TreeItem)
。- 参数
-
node
- 需要级别的TreeItem。 - 结果
- 表示给定节点上父节点数的整数,如果给定的TreeItem为空,则为-1。
-
setCellFactory
public final void setCellFactory(Callback<TreeView<T>,TreeCell<T>> value)
设置将用于创建TreeCells的单元格工厂,用于表示TreeView中的项目。 该工厂与ListView中的cellFactory和其他复杂的复合控件相同。 只有当系统确定没有足够的单元格来表示当前可见的项目时,才需要创建一个新的TreeCell。 TreeCell被系统重用,可以在树中表示不同的项目。有关详细信息,请参阅
Cell
课程文档。- 参数
-
value
- 用于生成TreeCell实例的Callback
,如果应使用默认单元格工厂,则为null。
-
getCellFactory
public final Callback<TreeView<T>,TreeCell<T>> getCellFactory()
返回用于创建TreeCells的单元格工厂,用于表示TreeView中的项目,如果未设置自定义单元格工厂,则返回null。
- 结果
- 电池厂
-
cellFactoryProperty
public final ObjectProperty<Callback<TreeView<T>,TreeCell<T>>> cellFactoryProperty()
表示将用于创建TreeCells的单元格工厂,用于表示TreeView中的项目。- 结果
- 电池厂属性
-
setRoot
public final void setRoot(TreeItem<T> value)
设置此TreeView中的根节点。 有关更多详细信息,请参阅TreeItem
类级别的文档。- 参数
-
value
- 将放置在TreeView根目录的TreeItem
。
-
getRoot
public final TreeItem<T> getRoot()
返回此TreeView的当前根节点,如果未指定根节点,则返回null。- 结果
- 当前根节点,如果没有根节点存在则为null。
-
rootProperty
public final ObjectProperty<TreeItem<T>> rootProperty()
表示TreeView根节点的属性。- 另请参见:
-
getRoot()
,setRoot(TreeItem)
-
setShowRoot
public final void setShowRoot(boolean value)
指定是否应在此TreeView中显示根TreeItem
根。- 参数
-
value
- 如果为true,则将显示根value
,如果为false,则它将被隐藏。
-
isShowRoot
public final boolean isShowRoot()
如果应该显示TreeView的根,则返回true,否则返回false。 默认情况下,TreeView中的根树项目可见。- 结果
- 如果应该显示TreeView的根,则为true
-
showRootProperty
public final BooleanProperty showRootProperty()
表示TreeView根节点是否可见的属性。- 另请参见:
-
isShowRoot()
,setShowRoot(boolean)
-
setSelectionModel
public final void setSelectionModel(MultipleSelectionModel<TreeItem<T>> value)
设置要在TreeView中使用的MultipleSelectionModel
。 尽管TreeView需要MultipleSelectionModel
,但可以将其配置为仅允许单次选择(有关详细信息,请参阅MultipleSelectionModel.setSelectionMode(javafx.scene.control.SelectionMode)
)。- 参数
-
value
- 要使用的MultipleSelectionModel
-
getSelectionModel
public final MultipleSelectionModel<TreeItem<T>> getSelectionModel()
返回当前安装的选择模型。- 结果
- 当前安装的选择模型
-
selectionModelProperty
public final ObjectProperty<MultipleSelectionModel<TreeItem<T>>> selectionModelProperty()
SelectionModel提供了可以在TreeView中选择单个或多个项目的API,以及检查用户选择了哪些行。 请注意,它有一个通用类型,必须与TreeView本身的类型相匹配。
-
setFocusModel
public final void setFocusModel(FocusModel<TreeItem<T>> value)
设置要在TreeView中使用的FocusModel
。- 参数
-
value
- 要使用的FocusModel
-
getFocusModel
public final FocusModel<TreeItem<T>> getFocusModel()
返回当前安装的FocusModel
。- 结果
-
目前安装的
FocusModel
-
focusModelProperty
public final ObjectProperty<FocusModel<TreeItem<T>>> focusModelProperty()
FocusModel提供API,通过它可以将焦点控制在零行或一行TreeView。 通常默认的实现应该是足够的。
-
expandedItemCountProperty
public final ReadOnlyIntegerProperty expandedItemCountProperty()
表示当前能够在TreeView中可见的树节点数。 这实质上是所有扩展的树项目及其子项的计数。
例如,如果只有根节点可见,则expandItemCount将为1。 如果根有三个孩子并且根被扩大,那么这个值将是四个。
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getExpandedItemCount()
-
getExpandedItemCount
public final int getExpandedItemCount()
获取属性expandedItemCount的值。- Property description:
-
表示当前能够在TreeView中可见的树节点数。 这实质上是所有扩展的树项目及其子项的计数。
例如,如果只有根节点可见,则expandItemCount将为1。 如果根有三个孩子并且根被扩大,那么这个值将是四个。
- 从以下版本开始:
- JavaFX 8.0
-
setFixedCellSize
public final void setFixedCellSize(double value)
设置此控件的新固定单元格大小。 任何大于零的值将启用固定的单元大小模式,而零值或负值(或Region.USE_COMPUTED_SIZE)将用于禁用固定单元大小模式。- 参数
-
value
- 新的固定单元格大小值,或小于或等于零(或Region.USE_COMPUTED_SIZE)的值禁用。 - 从以下版本开始:
- JavaFX 8.0
-
getFixedCellSize
public final double getFixedCellSize()
返回固定的单元格大小值。 使用小于或等于零的值来表示禁用固定单元大小模式,大于零的值表示此控件中所有单元格的大小。- 结果
- 表示该控件的固定单元大小的double,或者如果固定单元大小模式被禁用,小于或等于零的值。
- 从以下版本开始:
- JavaFX 8.0
-
fixedCellSizeProperty
public final DoubleProperty fixedCellSizeProperty()
指定此控件是否具有固定高度(指定值)的单元格。 如果该值小于或等于零,则所有单元格都被单独设置和定位。 这是一个缓慢的操作。 因此,当性能重要且开发人员不依赖于可变单元大小时,设置固定单元大小值是一个好主意。 一般情况下,单元格大约为24像素,因此设置固定的单元格大小为24可能导致视觉差异很小,但性能有所改善。要通过CSS设置此属性,请使用-fx-fixed-cell-size属性。 这不应该与-fx-cell-size属性混淆。 这两个CSS属性之间的区别是-fx-cell-size将所有单元格的大小设置为指定的大小,但不会强制这是唯一的大小(从而允许变量单元大小,并且阻止性能提升可能)。 因此,当性能很重要的时候使用-fx-fixed-cell-size,而不是-fx-cell-size。 如果在CSS中指定了两个属性,则-fx-fixed-cell-size优先。
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getFixedCellSize()
,setFixedCellSize(double)
-
setEditable
public final void setEditable(boolean value)
设置属性可编辑的值。- Property description:
- 指定此TreeView是否可编辑 - 只有当TreeView和TreeCells都可编辑时,TreeCell才能进入编辑状态。
-
isEditable
public final boolean isEditable()
获取可编辑属性的值。- Property description:
- 指定此TreeView是否可编辑 - 只有当TreeView和TreeCells都可编辑时,TreeCell才能进入编辑状态。
-
editableProperty
public final BooleanProperty editableProperty()
指定此TreeView是否可编辑 - 只有当TreeView和TreeCells都可编辑时,TreeCell才能进入编辑状态。- 另请参见:
-
isEditable()
,setEditable(boolean)
-
getEditingItem
public final TreeItem<T> getEditingItem()
返回TreeView中当前正在编辑的TreeItem,如果没有编辑任何项目,则返回null。- 结果
- TreeView中当前正在编辑的TreeItem
-
editingItemProperty
public final ReadOnlyObjectProperty<TreeItem<T>> editingItemProperty()
用于表示当前在TreeView中编辑的TreeItem的属性,如果正在进行编辑,或者如果没有编辑任何项目,则为null。
不可能设置编辑项,而需要调用
edit(javafx.scene.control.TreeItem)
。- 另请参见:
-
getEditingItem()
-
setOnEditStart
public final void setOnEditStart(EventHandler<TreeView.EditEvent<T>> value)
设置当用户开始编辑时将被调用的EventHandler
。- 参数
-
value
- 当用户开始编辑时将被调用的EventHandler
-
getOnEditStart
public final EventHandler<TreeView.EditEvent<T>> getOnEditStart()
返回当用户开始编辑时将被调用的EventHandler
。- 结果
-
EventHandler
当用户开始编辑时
-
onEditStartProperty
public final ObjectProperty<EventHandler<TreeView.EditEvent<T>>> onEditStartProperty()
当用户成功启动编辑时,会触发此事件处理程序。
-
setOnEditCommit
public final void setOnEditCommit(EventHandler<TreeView.EditEvent<T>> value)
设置当用户提交编辑时将被调用的EventHandler
。- 参数
-
value
- 当用户提交编辑时将被调用的EventHandler
-
getOnEditCommit
public final EventHandler<TreeView.EditEvent<T>> getOnEditCommit()
返回当用户提交编辑时将被调用的EventHandler
。- 结果
-
当用户提交编辑时将被调用的
EventHandler
-
onEditCommitProperty
public final ObjectProperty<EventHandler<TreeView.EditEvent<T>>> onEditCommitProperty()
当用户执行应导致其编辑输入持久化的操作时,将使用此属性。
此属性中的EventHandler不应该直接调用 - 而是从您的自定义TreeCell中调用
TreeCell.commitEdit(java.lang.Object)
。 这将处理触发此事件,更新视图和切换编辑状态。
-
setOnEditCancel
public final void setOnEditCancel(EventHandler<TreeView.EditEvent<T>> value)
设置当用户取消编辑时将被调用的EventHandler
。- 参数
-
value
- 当用户取消编辑时将被调用的EventHandler
-
getOnEditCancel
public final EventHandler<TreeView.EditEvent<T>> getOnEditCancel()
返回当用户取消编辑时将被调用的EventHandler
。- 结果
-
当用户取消编辑时将被调用的
EventHandler
-
onEditCancelProperty
public final ObjectProperty<EventHandler<TreeView.EditEvent<T>>> onEditCancelProperty()
当用户取消编辑单元格时,将触发此事件处理程序。
-
layoutChildren
protected void layoutChildren()
在布局传递过程中调用这个Parent
的孩子。 默认情况下,它只会将受管理的可调整大小的内容的大小设置为其首选大小,并且不会执行任何节点定位。子类应该根据需要重写此函数以布局内容。
- 重写:
-
layoutChildren
在Control
-
edit
public void edit(TreeItem<T> item)
指示TreeView开始编辑给定的TreeItem,如果TreeView是editable
。 一旦调用此方法,如果当前的cell factory
设置为支持编辑,Cell将切换其视觉状态以使用户输入。- 参数
-
item
- 应该编辑的TreeView中的TreeItem。
-
scrollTo
public void scrollTo(int index)
滚动TreeView,使给定索引中的项目对最终用户可见。- 参数
-
index
- 应该对用户可见的索引,假定它大于或等于0,小于TreeView中可见项的数量。
-
setOnScrollTo
public void setOnScrollTo(EventHandler<ScrollToEvent<Integer>> value)
设置属性onScrollTo的值。- Property description:
-
当有请求使用
scrollTo(int)
将索引滚动到视图时 调用 - 从以下版本开始:
- JavaFX 8.0
-
getOnScrollTo
public EventHandler<ScrollToEvent<Integer>> getOnScrollTo()
获取属性onScrollTo的值。- Property description:
-
当有请求使用
scrollTo(int)
将索引滚动到视图时 调用 - 从以下版本开始:
- JavaFX 8.0
-
onScrollToProperty
public ObjectProperty<EventHandler<ScrollToEvent<Integer>>> onScrollToProperty()
当有请求使用scrollTo(int)
将索引滚动到视图时 调用- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getOnScrollTo()
,setOnScrollTo(EventHandler)
-
getRow
public int getRow(TreeItem<T> item)
返回给定TreeItem的索引位置,假设它目前可通过树层次结构访问(最显着的是所有父树项目都被扩展)。 如果父树项目被折叠,则结果是该方法将返回-1以指示树中不可访问给定树项。- 参数
-
item
- 寻找索引的TreeItem。 - 结果
- 一个整数,表示给定TreeItem的第一个实例的当前TreeView中的位置,如果为null,或者不能找到,则为-1(例如,如果父(一直到根)已折叠)。
-
getTreeItem
public TreeItem<T> getTreeItem(int row)
返回给定索引中的TreeItem,如果超出范围则返回null。- 参数
-
row
- 正在寻找TreeItem的索引。 - 结果
- 给定索引中的TreeItem,如果超出范围,则为null。
-
getTreeItemLevel
public int getTreeItemLevel(TreeItem<?> node)
根据getParent()可以递归调用的次数,返回给定TreeItem的“缩进”级别数。 如果给定的TreeItem是此TreeView的根节点,或者如果TreeItem没有任何父集,则返回的值将为零。 对于每次递归调用getParent(),返回的值都将增加1。- 参数
-
node
- 需要级别的TreeItem。 - 结果
- 表示给定节点上父节点数的整数,如果给定的TreeItem为空,则为-1。
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
为此控件创建一个新的默认皮肤实例。 如果没有通过CSS-fx-skin
提供皮肤,或者在具有setSkin(...)
的子类中显式设置,则调用此控件创建皮肤。- 重写:
-
createDefaultSkin
在Control
- 结果
- 此控件的默认皮肤的新实例。 如果为null,则控件将没有皮肤,除非由css提供。
-
refresh
public void refresh()
调用refresh()
强制TreeView控件重新创建并重新填充填充控件的可视边界所需的单元格。 换句话说,这会强制TreeView更新它向用户显示的内容。 这在底层数据源以TreeView本身未观察到的方式发生更改的情况下很有用。- 从以下版本开始:
- JavaFX 8u60
-
getClassCssMetaData
public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
- 结果
- 与此类相关联的CssMetaData可能包括其类的CssMetaData。
- 从以下版本开始:
- JavaFX 8.0
-
getControlCssMetaData
public List<CssMetaData<? extends Styleable,?>> getControlCssMetaData()
- 重写:
-
getControlCssMetaData
中的Control
- 结果
- 不可修改的控件列表css样式属性
- 从以下版本开始:
- JavaFX 8.0
-
queryAccessibleAttribute
public Object queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
该方法由辅助技术调用以请求属性的值。子类通常覆盖此方法来实现特定角色所需的属性。
如果未处理特定属性,则必须调用超类实现。- 重写:
-
queryAccessibleAttribute
在Control
- 参数
-
attribute
- 请求的属性 -
parameters
- 可选参数列表 - 结果
- 请求的属性的值
- 另请参见:
-
AccessibleAttribute
-
-