- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- javafx.scene.control.ListView<T>
-
- 参数类型
-
T
- 此类型用于表示存储在ListViewsitems
ObservableList中的对象的类型。 它也用于selection model
和focus model
。
- All Implemented Interfaces:
-
Styleable
,EventTarget
,Skinnable
@DefaultProperty("items") public class ListView<T> extends Control
ListView显示用户可以从中选择或与用户可以进行交互的项目的水平或垂直列表。 ListView能够将其通用类型设置为表示后台模型中的数据类型。 这样做有利于在ListView中进行各种方法以及支持类(如下所述),类型安全。 此外,使用通用类型支持使用ListView的应用程序的大大简化开发,因为所有现代IDE都能够更加成功地使用附加类型信息自动完成。填充ListView
如何创建和填充ListView的名称(Strings)的简单示例如下所示:
ObservableList<String> names = FXCollections.observableArrayList( "Julia", "Ian", "Sue", "Matthew", "Hannah", "Stephan", "Denise"); ListView<String> listView = new ListView<String>(names);
ListView的元素包含在
items
ObservableList
中 。 这个ObservableList由ListView自动观察到,这样ObservableList中发生的任何更改都将自动显示在ListView本身中。 如果将ObservableList
传递给ListView构造函数是不可行的,那么设置项目的推荐方法是简单地调用:ObservableList<T> content = ... listView.setItems(content);
ListView接受的另一种方法不是推荐的方法 :
List<T> content = ... getItems().setAll(content);
ListView选择/焦点API
要跟踪选择和重点,有必要熟悉
SelectionModel
和FocusModel
类。 ListView最多只有一个这些类的一个实例,分别可从selectionModel
和focusModel
属性获得。 虽然可以使用此API来设置新的选择模型,但在大多数情况下,这不是必需的 - 默认选择和焦点模型应该在大多数情况下工作。实例化ListView时使用的默认值为
SelectionModel
是MultipleSelectionModel
抽象类的实现。 但是,如selectionMode
属性的API文档中所述,默认值为SelectionMode.SINGLE
。 要在默认ListView实例中启用多个选择,因此需要执行以下操作:listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
自定义ListView视觉
可以通过替换默认的
cell factory
完全自定义ListView的视觉效果。 一个单元格工厂用于生成ListCell
个实例,用于表示ListView中的一个项目。 有关如何编写自定义单元格的更完整的说明,请参阅Cell
类文档。编辑
此控件支持值的内联编辑,本节尝试概述可用的API以及如何使用它们。
首先,细胞编辑通常需要不同于不编辑细胞的用户界面。 这是正在使用的
Cell
实现的责任。 对于ListView,这是cell factory
的责任。 您可以选择单元格是否永久处于编辑状态(例如,这对于CheckBox
单元格是常见的),或者在编辑开始时切换到不同的UI(例如,在单元格上接收到双击时)。要知道在单元格上请求编辑时,只需覆盖
Cell.startEdit()
方法,并根据需要更新单元格text
和graphic
属性(例如,将文本设置为空,并将图形设置为TextField
)。 此外,您还应该覆盖Cell.cancelEdit()
,以便在编辑结束时将UI重置为原始的可视状态。 在这两种情况下,重要的是您还要确保您调用超级方法以使单元格执行所有必须执行的任务,以进入或退出其编辑模式。一旦您的单元格处于编辑状态,您最感兴趣的下一件事就是如何提交或取消正在进行的编辑。 这是您作为电池厂商的责任。 您的单元实现将基于用户输入(例如当用户按下键盘上的Enter键或ESC键时)知道编辑结束。 发生这种情况时,您有责任酌情致电
Cell.commitEdit(Object)
或Cell.cancelEdit()
。当您拨打
Cell.commitEdit(Object)
一个事件触发到ListView,您可以通过setOnEditCommit(javafx.event.EventHandler)
添加一个EventHandler
来观察 。 同样,您还可以观察edit start
和edit cancel
的编辑事件。默认情况下,ListView编辑提交处理程序是非空的,默认处理程序会尝试覆盖当前正在编辑的行中的项目的属性值。 它可以这样做,因为
Cell.commitEdit(Object)
方法在新值中传递,并通过被触发的ListView.EditEvent
传递给编辑提交处理程序。 这只是一个调用ListView.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包中找到这些预构建的单元工厂。
- 从以下版本开始:
- JavaFX 2.0
- 另请参见:
-
ListCell
,MultipleSelectionModel
,FocusModel
-
-
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
ListView.EditEvent<T>
一个Event
在ListView中专门用于表示编辑相关事件的子类。
-
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
-
-
构造方法摘要
构造方法 Constructor 描述 ListView()
创建一个默认的ListView,它将显示垂直堆叠的内容。ListView(ObservableList<T> items)
创建一个默认的ListView,它将堆叠从垂直提供的ObservableList
检索的内容。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 ObjectProperty<Callback<ListView<T>,ListCell<T>>>
cellFactoryProperty()
设置自定义单元格工厂具有推迟所有单元格创建的效果,允许对单元格进行全面定制。protected Skin<?>
createDefaultSkin()
为此控件创建一个新的默认皮肤实例。void
edit(int itemIndex)
如果ListView为editable
,则指示ListView开始编辑给定索引中的项目。BooleanProperty
editableProperty()
指定此ListView是否可编辑 - 只有当ListView和ListCells都可编辑时,ListCell才能进入编辑状态。static <T> EventType<ListView.EditEvent<T>>
editAnyEvent()
指示发生一些编辑事件的EventType。static <T> EventType<ListView.EditEvent<T>>
editCancelEvent()
一个EventType,用于指示在事件触发的ListView中刚刚取消了编辑事件。static <T> EventType<ListView.EditEvent<T>>
editCommitEvent()
EventType用于指示已在触发事件的ListView中提交了编辑事件。ReadOnlyIntegerProperty
editingIndexProperty()
用于表示当前在ListView中编辑的项目的索引的属性(如果正在进行编辑),如果没有编辑任何项目,则用于表示-1。static <T> EventType<ListView.EditEvent<T>>
editStartEvent()
EventType用于指示在事件被触发的ListView中启动编辑事件。DoubleProperty
fixedCellSizeProperty()
指定此控件是否具有固定高度(指定值)的单元格。ObjectProperty<FocusModel<T>>
focusModelProperty()
FocusModel提供了API,通过它可以获得并设置ListView中单个项目的焦点。Callback<ListView<T>,ListCell<T>>
getCellFactory()
返回当前的单元格工厂。static List<CssMetaData<? extends Styleable,?>>
getClassCssMetaData()
List<CssMetaData<? extends Styleable,?>>
getControlCssMetaData()
int
getEditingIndex()
返回ListView中当前正在编辑的项目的索引,如果没有编辑任何项目,则返回-1。double
getFixedCellSize()
返回固定的单元格大小值。FocusModel<T>
getFocusModel()
返回当前安装的FocusModel
。ObservableList<T>
getItems()
返回一个ObservableList
,其中包含当前显示给用户的项目。EventHandler<ListView.EditEvent<T>>
getOnEditCancel()
返回当用户取消编辑时将被调用的EventHandler
。EventHandler<ListView.EditEvent<T>>
getOnEditCommit()
返回当用户提交编辑时将被调用的EventHandler
。EventHandler<ListView.EditEvent<T>>
getOnEditStart()
返回当用户开始编辑时将被调用的EventHandler
。EventHandler<ScrollToEvent<Integer>>
getOnScrollTo()
获取属性onScrollTo的值。Orientation
getOrientation()
返回ListView的当前方向,它决定了它是垂直滚动还是水平滚动。Node
getPlaceholder()
获取属性占位符的值。MultipleSelectionModel<T>
getSelectionModel()
返回当前安装的选择模型。boolean
isEditable()
获取可编辑属性的值。ObjectProperty<ObservableList<T>>
itemsProperty()
ListView的底层数据模型。ObjectProperty<EventHandler<ListView.EditEvent<T>>>
onEditCancelProperty()
当用户取消编辑单元格时,将触发此事件处理程序。ObjectProperty<EventHandler<ListView.EditEvent<T>>>
onEditCommitProperty()
当用户执行应导致其编辑输入持久化的操作时,将使用此属性。ObjectProperty<EventHandler<ListView.EditEvent<T>>>
onEditStartProperty()
当用户成功启动编辑时,会触发此事件处理程序。ObjectProperty<EventHandler<ScrollToEvent<Integer>>>
onScrollToProperty()
ObjectProperty<Orientation>
orientationProperty()
ListView
的方向 - 这可以是水平还是垂直。ObjectProperty<Node>
placeholderProperty()
当列表视图没有显示的内容时,向用户显示该节点。Object
queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
该方法由辅助技术调用以请求属性的值。void
refresh()
调用refresh()
强制ListView控件重新创建并重新填充填充控件的可视边界所需的单元格。void
scrollTo(int index)
滚动ListView,使给定索引中的项目对最终用户可见。void
scrollTo(T object)
滚动ListView,使给定对象在视口内可见。ObjectProperty<MultipleSelectionModel<T>>
selectionModelProperty()
SelectionModel提供了可以在ListView中选择单个或多个项目的API,以及检查用户选择了哪些项目。void
setCellFactory(Callback<ListView<T>,ListCell<T>> value)
设置要在ListView中使用的新单元格工厂。void
setEditable(boolean value)
设置属性可编辑的值。void
setFixedCellSize(double value)
设置此控件的新固定单元格大小。void
setFocusModel(FocusModel<T> value)
设置要在ListView中使用的FocusModel
。void
setItems(ObservableList<T> value)
设置ListView的底层数据模型。void
setOnEditCancel(EventHandler<ListView.EditEvent<T>> value)
设置当用户取消编辑时将被调用的EventHandler
。void
setOnEditCommit(EventHandler<ListView.EditEvent<T>> value)
设置当用户完成编辑时将被调用的EventHandler
。void
setOnEditStart(EventHandler<ListView.EditEvent<T>> value)
设置当用户开始编辑时将被调用的EventHandler
。void
setOnScrollTo(EventHandler<ScrollToEvent<Integer>> value)
设置属性onScrollTo的值。void
setOrientation(Orientation value)
设置ListView的方向,它决定它是垂直滚动还是水平滚动。void
setPlaceholder(Node value)
设置属性占位符的值。void
setSelectionModel(MultipleSelectionModel<T> value)
设置要在ListView中使用的MultipleSelectionModel
。-
Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getContextMenu, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, 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
-
items
public final ObjectProperty<ObservableList<T>> itemsProperty
ListView的底层数据模型。 请注意,它具有必须与ListView本身类型匹配的通用类型。- 结果
- 这个ListView的items属性
-
placeholder
public final ObjectProperty<Node> placeholderProperty
当列表视图没有显示的内容时,向用户显示该节点。 可能是这种情况,因为表模型首先没有数据,或者过滤器已经应用于列表模型,导致无法显示用户。- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getPlaceholder()
,setPlaceholder(Node)
-
selectionModel
public final ObjectProperty<MultipleSelectionModel<T>> selectionModelProperty
SelectionModel提供了可以在ListView中选择单个或多个项目的API,以及检查用户选择了哪些项目。 请注意,它具有必须与ListView本身类型匹配的通用类型。
-
focusModel
public final ObjectProperty<FocusModel<T>> focusModelProperty
FocusModel提供了API,通过它可以获得并设置ListView中单个项目的焦点。 请注意,它具有必须与ListView本身类型匹配的通用类型。
-
orientation
public final ObjectProperty<Orientation> orientationProperty
ListView
的方向 - 这可以是水平还是垂直。
-
cellFactory
public final ObjectProperty<Callback<ListView<T>,ListCell<T>>> cellFactoryProperty
设置自定义单元格工厂具有推迟所有单元格创建的效果,允许对单元格进行全面定制。 在内部,ListView负责重用ListCells - 所有必要的是自定义单元格工厂从此函数返回可用于表示ListView中任何项目的ListCell。
有关详细信息,请参阅
Cell
类文档。
-
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
指定此ListView是否可编辑 - 只有当ListView和ListCells都可编辑时,ListCell才能进入编辑状态。- 另请参见:
-
isEditable()
,setEditable(boolean)
-
editingIndex
public final ReadOnlyIntegerProperty editingIndexProperty
用于表示当前在ListView中编辑的项目的索引的属性(如果正在进行编辑),如果没有编辑任何项目,则用于表示-1。
不可能设置编辑索引,而需要您调用
edit(int)
。- 另请参见:
-
getEditingIndex()
-
onEditStart
public final ObjectProperty<EventHandler<ListView.EditEvent<T>>> onEditStartProperty
当用户成功启动编辑时,会触发此事件处理程序。
-
onEditCommit
public final ObjectProperty<EventHandler<ListView.EditEvent<T>>> onEditCommitProperty
当用户执行应导致其编辑输入持久化的操作时,将使用此属性。
此属性中的EventHandler不应该直接调用 - 而是从您的自定义ListCell中调用
ListCell.commitEdit(java.lang.Object)
。 这将处理触发此事件,更新视图和切换编辑状态。
-
onEditCancel
public final ObjectProperty<EventHandler<ListView.EditEvent<T>>> onEditCancelProperty
当用户取消编辑单元格时,将触发此事件处理程序。
-
onScrollTo
public ObjectProperty<EventHandler<ScrollToEvent<Integer>>> onScrollToProperty
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getOnScrollTo()
,setOnScrollTo(EventHandler)
-
-
构造方法详细信息
-
ListView
public ListView()
创建一个默认的ListView,它将显示垂直堆叠的内容。 由于在此构造函数中没有提供ObservableList
,因此创建一个空的ObservableList,这意味着如果需要,直接调用getItems()
是合法的。 但是,如其他地方所述,这不是推荐的方法(而是调用setItems(javafx.collections.ObservableList)
)。有关其他属性的默认状态的详细信息,请参阅
ListView
类文档。
-
ListView
public ListView(ObservableList<T> items)
创建一个默认的ListView,它将堆叠从垂直提供的ObservableList
检索的内容。尝试将一个监听器添加到
ObservableList
,以便列表中的所有后续更改将显示给用户。有关其他属性的默认状态的详细信息,请参阅
ListView
类文档。- 参数
-
items
- 项目列表
-
-
方法详细信息
-
editAnyEvent
public static <T> EventType<ListView.EditEvent<T>> editAnyEvent()
指示发生一些编辑事件的EventType。 这是所有其他编辑的事件父类型:EDIT_START_EVENT
,EDIT_COMMIT_EVENT
和EDIT_CANCEL_EVENT
。- 参数类型
-
T
- 存储在此ListView中的对象的类型 - 结果
- 事件类型
-
editStartEvent
public static <T> EventType<ListView.EditEvent<T>> editStartEvent()
EventType用于指示在事件被触发的ListView中启动编辑事件。- 参数类型
-
T
- 存储在此ListView中的对象的类型 - 结果
- 事件类型
-
editCancelEvent
public static <T> EventType<ListView.EditEvent<T>> editCancelEvent()
一个EventType,用于指示在事件触发的ListView中刚刚取消了编辑事件。- 参数类型
-
T
- 存储在此ListView中的对象的类型 - 结果
- 事件类型
-
editCommitEvent
public static <T> EventType<ListView.EditEvent<T>> editCommitEvent()
EventType用于指示已在触发事件的ListView中提交了编辑事件。- 参数类型
-
T
- 存储在此ListView中的对象的类型 - 结果
- 事件类型
-
setItems
public final void setItems(ObservableList<T> value)
设置ListView的底层数据模型。 请注意,它具有必须与ListView本身类型匹配的通用类型。- 参数
-
value
- 此ListView的项目列表
-
getItems
public final ObservableList<T> getItems()
返回一个ObservableList
,其中包含当前向用户显示的项目。 如果先前已经调用了setItems(javafx.collections.ObservableList)
,这可能为null,但是默认情况下,它是一个空的ObservableList。- 结果
- 包含要显示给用户的项目的ObservableList,如果项目以前设置为null,则为null。
-
itemsProperty
public final ObjectProperty<ObservableList<T>> itemsProperty()
ListView的底层数据模型。 请注意,它具有必须与ListView本身类型匹配的通用类型。- 结果
- 这个ListView的items属性
-
placeholderProperty
public final ObjectProperty<Node> placeholderProperty()
当列表视图没有显示的内容时,向用户显示该节点。 可能是这种情况,因为表模型首先没有数据,或者过滤器已经应用于列表模型,导致无法显示用户。- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getPlaceholder()
,setPlaceholder(Node)
-
setPlaceholder
public final void setPlaceholder(Node value)
设置属性占位符的值。- Property description:
- 当列表视图没有显示的内容时,向用户显示该节点。 可能是这种情况,因为表模型首先没有数据,或者过滤器已经应用于列表模型,导致无法显示用户。
- 从以下版本开始:
- JavaFX 8.0
-
getPlaceholder
public final Node getPlaceholder()
获取属性占位符的值。- Property description:
- 当列表视图没有显示的内容时,向用户显示该节点。 可能是这种情况,因为表模型首先没有数据,或者过滤器已经应用于列表模型,导致无法显示用户。
- 从以下版本开始:
- JavaFX 8.0
-
setSelectionModel
public final void setSelectionModel(MultipleSelectionModel<T> value)
设置要在ListView中使用的MultipleSelectionModel
。 尽管需要使用多个 SelectionModel的ListView,但可以将其配置为仅允许单次选择(有关详细信息,请参阅MultipleSelectionModel.setSelectionMode(javafx.scene.control.SelectionMode)
)。- 参数
-
value
- 要在此ListView中使用的MultipleSelectionModel
-
getSelectionModel
public final MultipleSelectionModel<T> getSelectionModel()
返回当前安装的选择模型。- 结果
- 当前安装的选择模型
-
selectionModelProperty
public final ObjectProperty<MultipleSelectionModel<T>> selectionModelProperty()
SelectionModel提供了可以在ListView中选择单个或多个项目的API,以及检查用户选择了哪些项目。 请注意,它具有必须与ListView本身类型匹配的通用类型。
-
setFocusModel
public final void setFocusModel(FocusModel<T> value)
设置要在ListView中使用的FocusModel
。- 参数
-
value
- 要在ListView中使用的FocusModel
-
getFocusModel
public final FocusModel<T> getFocusModel()
返回当前安装的FocusModel
。- 结果
- 当前安装的FocusModel
-
focusModelProperty
public final ObjectProperty<FocusModel<T>> focusModelProperty()
FocusModel提供了API,通过它可以获得并设置ListView中单个项目的焦点。 请注意,它具有必须与ListView本身类型匹配的通用类型。
-
setOrientation
public final void setOrientation(Orientation value)
设置ListView的方向,它决定它是垂直滚动还是水平滚动。- 参数
-
value
- ListView的方向
-
getOrientation
public final Orientation getOrientation()
返回ListView的当前方向,它决定了它是垂直滚动还是水平滚动。- 结果
- ListView的当前方向
-
orientationProperty
public final ObjectProperty<Orientation> orientationProperty()
ListView
的方向 - 这可以是水平还是垂直。
-
setCellFactory
public final void setCellFactory(Callback<ListView<T>,ListCell<T>> value)
设置要在ListView中使用的新单元格工厂。 这迫使所有旧的ListCell
被抛弃,并且新的ListCell是用新的单元格工厂创建的。- 参数
-
value
- 在这个ListView中使用的单元格工厂
-
getCellFactory
public final Callback<ListView<T>,ListCell<T>> getCellFactory()
返回当前的单元格工厂。- 结果
- 目前的电池厂
-
cellFactoryProperty
public final ObjectProperty<Callback<ListView<T>,ListCell<T>>> cellFactoryProperty()
设置自定义单元格工厂具有推迟所有单元格创建的效果,允许对单元格进行全面定制。 在内部,ListView负责重用ListCells - 所有必要的是自定义单元格工厂从此函数返回可用于表示ListView中任何项目的ListCell。
有关详细信息,请参阅
Cell
类文档。
-
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:
- 指定此ListView是否可编辑 - 只有当ListView和ListCells都可编辑时,ListCell才能进入编辑状态。
-
isEditable
public final boolean isEditable()
获取可编辑属性的值。- Property description:
- 指定此ListView是否可编辑 - 只有当ListView和ListCells都可编辑时,ListCell才能进入编辑状态。
-
editableProperty
public final BooleanProperty editableProperty()
指定此ListView是否可编辑 - 只有当ListView和ListCells都可编辑时,ListCell才能进入编辑状态。- 另请参见:
-
isEditable()
,setEditable(boolean)
-
getEditingIndex
public final int getEditingIndex()
返回ListView中当前正在编辑的项目的索引,如果没有编辑任何项目,则返回-1。- 结果
- 当前正在编辑的项目的索引
-
editingIndexProperty
public final ReadOnlyIntegerProperty editingIndexProperty()
用于表示当前在ListView中编辑的项目的索引的属性(如果正在进行编辑),如果没有编辑任何项目,则用于表示-1。
无法设置编辑索引,而需要调用
edit(int)
。- 另请参见:
-
getEditingIndex()
-
setOnEditStart
public final void setOnEditStart(EventHandler<ListView.EditEvent<T>> value)
设置当用户开始编辑时将被调用的EventHandler
。这是一个方便的方法 - 通过调用
addEventHandler(ListView.EDIT_START_EVENT, eventHandler)
可以实现相同的结果。- 参数
-
value
- 当用户开始编辑时将被调用的EventHandler
-
getOnEditStart
public final EventHandler<ListView.EditEvent<T>> getOnEditStart()
返回当用户开始编辑时将被调用的EventHandler
。- 结果
- 当用户开始编辑时将被调用的EventHandler
-
onEditStartProperty
public final ObjectProperty<EventHandler<ListView.EditEvent<T>>> onEditStartProperty()
当用户成功启动编辑时,会触发此事件处理程序。
-
setOnEditCommit
public final void setOnEditCommit(EventHandler<ListView.EditEvent<T>> value)
设置当用户完成编辑时将被调用的EventHandler
。 这被称为ListCell.commitEdit(java.lang.Object)
方法的一部分。这是一个方便的方法 - 通过调用
addEventHandler(ListView.EDIT_START_EVENT, eventHandler)
相同的结果。- 参数
-
value
- 当用户完成编辑时将被调用的EventHandler
-
getOnEditCommit
public final EventHandler<ListView.EditEvent<T>> getOnEditCommit()
返回当用户提交编辑时将被调用的EventHandler
。- 结果
- 当用户提交编辑时将被调用的EventHandler
-
onEditCommitProperty
public final ObjectProperty<EventHandler<ListView.EditEvent<T>>> onEditCommitProperty()
当用户执行应导致其编辑输入持久化的操作时,将使用此属性。
此属性中的EventHandler不应该直接调用 - 而是从您的自定义ListCell中调用
ListCell.commitEdit(java.lang.Object)
。 这将处理触发此事件,更新视图和切换编辑状态。
-
setOnEditCancel
public final void setOnEditCancel(EventHandler<ListView.EditEvent<T>> value)
设置当用户取消编辑时将被调用的EventHandler
。- 参数
-
value
- 当用户取消编辑时将被调用的EventHandler
-
getOnEditCancel
public final EventHandler<ListView.EditEvent<T>> getOnEditCancel()
返回当用户取消编辑时将被调用的EventHandler
。- 结果
- 当用户取消编辑时将被调用的EventHandler
-
onEditCancelProperty
public final ObjectProperty<EventHandler<ListView.EditEvent<T>>> onEditCancelProperty()
当用户取消编辑单元格时,将触发此事件处理程序。
-
edit
public void edit(int itemIndex)
指示ListView开始编辑给定索引中的项目,如果ListView为editable
。 一旦调用此方法,如果当前的cellFactoryProperty()
设置为支持编辑,则Cell将切换其视觉状态以使用户可以进行输入。- 参数
-
itemIndex
- ListView中应编辑的项目的索引。
-
scrollTo
public void scrollTo(int index)
滚动ListView,使给定索引中的项目对最终用户可见。- 参数
-
index
- 应该对用户可见的索引,假定它大于或等于0,小于给定ListView中包含的项目列表的大小。
-
scrollTo
public void scrollTo(T object)
滚动ListView,使给定对象在视口内可见。- 参数
-
object
- 用户应该可以看到的对象。 - 从以下版本开始:
- JavaFX 8.0
-
setOnScrollTo
public void setOnScrollTo(EventHandler<ScrollToEvent<Integer>> value)
设置属性onScrollTo的值。- Property description:
-
当有请求使用
scrollTo(int)
或scrollTo(Object)
将索引滚动到视图时 调用 - 从以下版本开始:
- JavaFX 8.0
-
getOnScrollTo
public EventHandler<ScrollToEvent<Integer>> getOnScrollTo()
获取属性onScrollTo的值。- Property description:
-
当有请求使用
scrollTo(int)
或scrollTo(Object)
将索引滚动到视图时 调用 - 从以下版本开始:
- JavaFX 8.0
-
onScrollToProperty
public ObjectProperty<EventHandler<ScrollToEvent<Integer>>> onScrollToProperty()
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
getOnScrollTo()
,setOnScrollTo(EventHandler)
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
为此控件创建一个新的默认皮肤实例。 如果没有通过CSS-fx-skin
提供皮肤或者在具有setSkin(...)
的子类中显式设置,则调用此控件创建皮肤。- 重写:
-
createDefaultSkin
在Control
- 结果
- 此控件的默认皮肤的新实例。 如果为null,则控件将没有皮肤,除非由css提供。
-
refresh
public void refresh()
调用refresh()
强制ListView控件重新创建并重新填充填充控件的可视边界所需的单元格。 换句话说,这会强制ListView更新它向用户显示的内容。 这在底层数据源以ListView本身未观察到的方式发生更改的情况下很有用。- 从以下版本开始:
- 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
-
-