- All Implemented Interfaces:
VFXStyleable
,VFXCell<T>
,javafx.css.Styleable
,javafx.event.EventTarget
- Direct Known Subclasses:
VFXDefaultTableRow
VFXTable
.
The default style class is set to '.vfx-row'.
This class has two peculiarities:
1) Extends Region
because each row is actually a wrapping container for the table's cells
2) Implements VFXCell
because most of the API is the same! Let's see the benefits:
First and foremost this allows us to use the same cache class VFXCellsCache
for the rows too
which is super convenient. As for the updateIndex(int)
and updateItem(Object)
methods,
well the row is no different from any other cell really. Each row wraps a cell for each table's column.
All its cells 'operate' on the same item, they just process the object differently (generally speaking).
So, a row which displays an item 'T' at index 17 in the list will have its index property set to 17, its item property
as well as all of its cells' item property will be set to 'T'.
As you can imagine, when we scroll in the viewport, make changes to the list (to cite only a few of the many changes types)
we want to update the cells by either or both index and item. The table does so through rows
(see updateColumns(IntegerRange, boolean)
for example).
1) Besides the index and item properties, each row also has the current range of columns the table needs to display,
getColumnsRange()
. This piece of information is crucial for the row to build (and thus wrap) the correct type
of cells. For example, let's say for a hypothetical User class I can see the 'First Name' column but not the 'Last Name'
one. We want the row to ask the 'First Name' column to give us a cell for this field
(it could be created or de-cached see getCell(int, VFXTableColumn, boolean)
).
Additionally, we want to make sure that every other cell produced by columns that are not visible anymore to be removed
from the children list (such cells can be disposed or cached, see saveCell(VFXTableColumn, VFXTableCell)
).
Every time something relevant to the rows changes in the table, each row computes its new state and if cells change
they call onCellsChanged()
to update the children list.
2) What do we mean by row's state? As probably already mentioned here VFXTable
, this container is a bit special
because we have two kinds of states. The global state which is a separate class VFXTableState
, but then each row
has its own "mini-state". The global state specifies which and how many items/rows should be present in the viewport,
but it misses one crucial detail which is covered by the rows' state, which and how many cells to show. Exactly as it
would be for a traditional state object, the cells keep a map of all their cells. When changes happen, we can easily
compute which cells to keep using, which ones need to be disposed and whether new ones are needed.
The type of map used is IndexBiMap.RowsStateMap
.
copyState(VFXTableRow)
), the layout is completely 'manual' and will
not respond to the traditional JavaFX 'triggers' but only to VFXTable.needsViewportLayoutProperty()
.
Note: because some of the base methods are actually quite complex to implement it's not recommended to use this
as a base class for extension but rather VFXDefaultTableRow
. Either way, always take a look at how original
algorithms work before customizing!-
Property Summary
PropertiesTypePropertyDescriptionjavafx.beans.property.ReadOnlyIntegerProperty
Specifies the index of the item displayed by the row and its cells.javafx.beans.property.ReadOnlyObjectProperty
<T> Specifies the object displayed by the row and its cells.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
Properties inherited from class javafx.scene.Parent
needsLayout
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, 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
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected IndexBiMap.RowsStateMap
<T, VFXTableCell<T>> protected io.github.palexdev.mfxcore.base.beans.range.IntegerRange
Fields inherited from class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
Fields inherited from class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
clear()
Clears the row's state without disposing it.protected void
copyState
(VFXTableRow<T> other) Sets this row's state to be exactly the same as the one given as parameter.void
dispose()
Automatically called by the table's system when the row is not needed anymore.protected VFXTableCell
<T> getCell
(int index, VFXTableColumn<T, VFXTableCell<T>> column, boolean useCache) This method is responsible for creating cells given the "parent" column (from which takes the cell factory), and its index.protected IndexBiMap.RowsStateMap
<T, VFXTableCell<T>> getCells()
List
<javafx.scene.Node> Converts and collects all the cells from the row's state map to JavaFX nodes by usingVFXCell.toNode()
.protected SequencedMap
<Integer, VFXTableCell<T>> io.github.palexdev.mfxcore.base.beans.range.IntegerRange
The range of columns visible in the viewport.int
getIndex()
Gets the value of theindex
property.getItem()
Gets the value of theitem
property.getTable()
protected abstract double
getWidthOf
(VFXTableColumn<T, ?> column, boolean forceLayout) This method should be responsible for computing the ideal width of a cell given the corresponding column so that its content can be fully shown.javafx.beans.property.ReadOnlyIntegerProperty
Specifies the index of the item displayed by the row and its cells.javafx.beans.property.ReadOnlyObjectProperty
<T> Specifies the object displayed by the row and its cells.protected void
This core method is responsible for sizing and positioning the cells in the row.protected void
Overridden to be a no-op.protected void
This is crucial to call when the row's cells change.void
onCreated
(VFXContainer<T> container) Called when a cell is created and associated with aVFXContainer
.protected abstract boolean
replaceCells
(VFXTableColumn<T, VFXTableCell<T>> column) This method mainly exists to react to cell factory changes.protected boolean
Caches all the row's cells by iterating over the state map and callingsaveCell(VFXTableColumn, VFXTableCell)
.protected void
saveCell
(VFXTableColumn<T, VFXTableCell<T>> column, VFXTableCell<T> cell) Asks the given column to save the given cell in its cache.protected void
setIndex
(int index) Sets the value of theindex
property.protected void
Sets the value of theitem
property.javafx.scene.layout.Region
toNode()
Converts the cell to aNode
.protected abstract void
updateColumns
(io.github.palexdev.mfxcore.base.beans.range.IntegerRange columnsRange, boolean changed) Implementations of this method should mainly react to two types of change in the table:void
updateIndex
(int index) Automatically called by the framework when the cell needs to update its index.void
updateItem
(T item) Automatically called by the framework when the cell needs to update its item.Methods inherited from class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, getBackground, getBorder, getClassCssMetaData, getCssMetaData, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, 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 class javafx.scene.Parent
getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
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, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, focusVisibleProperty, focusWithinProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, 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, 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 interface javafx.css.Styleable
getStyleableNode
Methods inherited from interface io.github.palexdev.virtualizedfx.cells.base.VFXCell
afterLayout, beforeLayout, onCache, onDeCache
-
Property Details
-
index
public javafx.beans.property.ReadOnlyIntegerProperty indexPropertySpecifies the index of the item displayed by the row and its cells.- See Also:
-
item
Specifies the object displayed by the row and its cells.- See Also:
-
-
Field Details
-
columnsRange
protected io.github.palexdev.mfxcore.base.beans.range.IntegerRange columnsRange -
cells
-
-
Constructor Details
-
VFXTableRow
-
-
Method Details
-
updateColumns
protected abstract void updateColumns(io.github.palexdev.mfxcore.base.beans.range.IntegerRange columnsRange, boolean changed) Implementations of this method should mainly react to two types of change in the table:1) the visible columns changes, or more in general the state's columns range changes
2) changes in the columns' list that may not necessarily change the range. In particular, this type of change is distinguished by the 'change' parameter set to true. In this case, the row's state should always be computed as there is no information on how the list changed, a 'better safe than sorry' approach.
-
replaceCells
This method mainly exists to react to cell factory changes. When a column changes its factory, there is no need to re-compute each rows' state, rather we can just replace the cells for that column with new ones. Implementations should have a proper algorithm for the sake of performance. -
getWidthOf
This method should be responsible for computing the ideal width of a cell given the corresponding column so that its content can be fully shown. This is important for the table's autosize feature to work properly!- Parameters:
forceLayout
- it may happen that this garbage that is JavaFX to still have an incomplete scene graph, meaning for example that skins are not still available for some controls/cells, which means that we could fail in computing any size. This may happen even if the table's layout has been already computed at least once. Internal checks try to identify such occasions and may pass 'true' to this method. What implementations could do to get a correct value is to force the cells to compute their layout (as well as all of their children) by invokingNode.applyCss()
. Note, however, that this is going to be a costly operation at init, but it's pretty much the only way.
-
copyState
Sets this row's state to be exactly the same as the one given as parameter. This is mainly useful when the table changes itsVFXTable.rowFactoryProperty()
because while it's true that the old rows are to be disposed abd removed, the new ones would still have the same state of the old ones. In such occasions, it's a great optimization to just copy the state of the old corresponsig row rather than re-computing it from zero.To further detail what happens when this is called:
- the index is updated to be the same as the 'other'
- the columns range is copied over
- the cells' map is copied over and the instance in the 'other' row is set to
IndexBiMap.RowsStateMap.EMPTY
- calls
VFXTableCell.updateRow(VFXTableRow)
on all the cells from the 'other' row- finally calls
Last but not least, note that such operation is likely going to need a layout request, but it's not the rows' responsibility to do so.onCellsChanged()
-
clear
protected void clear()Clears the row's state without disposing it. This will cause all cells to be cached bysaveAllCells()
, the index set to -1, the item set tonull
, the columns range set toUtils.INVALID_RANGE
and the children list to be cleared. -
onCellsChanged
protected void onCellsChanged()This is crucial to call when the row's cells change. All cells are 'collected' as nodes bygetCellsAsNodes()
and added to the row's children list. -
getCell
protected VFXTableCell<T> getCell(int index, VFXTableColumn<T, VFXTableCell<T>> column, boolean useCache) This method is responsible for creating cells given the "parent" column (from which takes the cell factory), and its index. Before creating a new cell using the factory, this attempts to retrieve one from the column's cells' cache, and only if there are no cached cells, a new one is built. The cache usage is optional and can be avoided by passing false as theuseCache
parameter.In any case, the cell will be fully updated:
VFXTableCell.updateRow(VFXTableRow)
,VFXTableCell.updateColumn(VFXTableColumn)
,VFXCell.updateItem(Object)
(if de-cached), andVFXCell.updateIndex(int)
. -
saveCell
Asks the given column to save the given cell in its cache. Beware that this operation won't remove the cell from the state map and the children list; therefore, you must do it before calling thisBy convention, when this is called, the cell's row and column properties are reset to
null
. This is to clearly indicate that the cell is not in the viewport anymore. -
saveAllCells
protected boolean saveAllCells()Caches all the row's cells by iterating over the state map and callingsaveCell(VFXTableColumn, VFXTableCell)
. The difference here is that the state map is also cleared at the end.Beware that this will not call
onCellsChanged()
, therefore, if needed, you will have to do it afterward. -
layoutCells
protected void layoutCells()This core method is responsible for sizing and positioning the cells in the row. This is done by iterating over the columns range, getting every cell and, if notnull
, delegating the operation toVFXTableHelper.layoutCell(int, VFXTableCell)
.This only defines the algorithm and is not automatically called by the row. Rather, it's the default table skin to call this on each row upon a layout request received from the
Note that this implementation allows having columns that produceVFXTable.needsViewportLayoutProperty()
.null
cells. -
toNode
public javafx.scene.layout.Region toNode()Description copied from interface:VFXCell
Converts the cell to aNode
.Implementations can check these examples:
// Example 1 public class SimpleCell<T> extends Label implements VFXCell<T> { ... ... @Override public Node toNode() { return this; } } // Example 2 public class SimpleCell<T> implements VFXCell<T> { private final Label label = ...; ... ... @Override public Node toNode() { return label; } }
-
updateIndex
public void updateIndex(int index) Description copied from interface:VFXCell
Automatically called by the framework when the cell needs to update its index.Note though, that there is no 100% guarantee the new given index is different from the current one. If you have some operations happen when the index changes, for performance reasons, I recommend you to first ensure the new index really is different.
See
VFXCellBase
and read how this is handled.- Specified by:
updateIndex
in interfaceVFXCell<T>
-
updateItem
Description copied from interface:VFXCell
Automatically called by the framework when the cell needs to update its item.Note though, that there is no 100% guarantee the new given item is different from the current one. If you have some operations happen when the item changes, for performance reasons, I recommend you to first ensure the new item really is different.
See
VFXCellBase
and read how this is handled.- Specified by:
updateItem
in interfaceVFXCell<T>
-
onCreated
Description copied from interface:VFXCell
Called when a cell is created and associated with aVFXContainer
. This method provides the cell with a reference to its container, allowing for any necessary initialization that depends on the container context.By default, this method does nothing. Subclasses can override it to implement container-specific setup or to access container properties and methods at the time of creation.
Note: This method should only be called by the container that created this cell. Calling it with a different or incorrect container instance may lead to inconsistent behavior or errors.- Specified by:
onCreated
in interfaceVFXCell<T>
- Parameters:
container
- theVFXContainer
instance that owns this cell
-
defaultStyleClasses
- Specified by:
defaultStyleClasses
in interfaceVFXStyleable
- Returns:
- a list containing all the component's default style classes
-
layoutChildren
protected void layoutChildren()Overridden to be a no-op. We manage the layout manually like real giga-chads.- Overrides:
layoutChildren
in classjavafx.scene.Parent
-
dispose
public void dispose()Automatically called by the table's system when the row is not needed anymore. Most of the operations are performed byclear()
. In addition, the table's instance is set tonull
. -
getTable
-
getIndex
public int getIndex()Gets the value of theindex
property.- Property description:
- Specifies the index of the item displayed by the row and its cells.
- Returns:
- the value of the
index
property - See Also:
-
indexProperty
public javafx.beans.property.ReadOnlyIntegerProperty indexProperty()Specifies the index of the item displayed by the row and its cells.- Returns:
- the
index
property - See Also:
-
setIndex
protected void setIndex(int index) Sets the value of theindex
property.- Property description:
- Specifies the index of the item displayed by the row and its cells.
- Parameters:
index
- the value for theindex
property- See Also:
-
getItem
Gets the value of theitem
property.- Property description:
- Specifies the object displayed by the row and its cells.
- Returns:
- the value of the
item
property - See Also:
-
itemProperty
Specifies the object displayed by the row and its cells.- Returns:
- the
item
property - See Also:
-
setItem
Sets the value of theitem
property.- Property description:
- Specifies the object displayed by the row and its cells.
- Parameters:
item
- the value for theitem
property- See Also:
-
getColumnsRange
public io.github.palexdev.mfxcore.base.beans.range.IntegerRange getColumnsRange()The range of columns visible in the viewport. This should always be the same as the currentVFXTableState
, and it's used to make the row always have the correct cells displayed (in accord to the visualized columns). -
getCellsUnmodifiable
- Returns:
- the row's cells as an unmodifiable
SequencedMap
, mapped by the row'sindexProperty()
.
-
getCells
- Returns:
- the row's state map, which contains the cells both mapped by the row's index or the cell's "parent" column.
-
getCellsByIndex
- Returns:
- the row's cells as a
SequencedMap
, mapped by the row'sindexProperty()
.
-
getCellsAsNodes
Converts and collects all the cells from the row's state map to JavaFX nodes by usingVFXCell.toNode()
.
-