java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.control.Control
org.controlsfx.control.PropertySheet
- All Implemented Interfaces:
javafx.css.Styleable
,javafx.event.EventTarget
,javafx.scene.control.Skinnable
public class PropertySheet
extends javafx.scene.control.Control
The PropertySheet control is a powerful control designed to make it really
easy for developers to present to end users a list of properties that the
end user is allowed to manipulate. Commonly a property sheet is used in
visual editors and other tools where a lot of properties exist.

To better describe what a property sheet is, please refer to the picture
below:
In this property sheet there exists two columns: the left column shows a
label describing the property itself, whereas the right column provides a
PropertyEditor
that allows the end user the means to manipulate the
property. In the screenshot you can see CheckEditor,
ChoiceEditor, TextEditor and FontEditor, among the
many editors that are available in the Editors
package.
To create a PropertySheet is simple: you firstly instantiate an instance
of PropertySheet, and then you pass in a list of PropertySheet.Item
instances,
where each Item represents a single property that is to be editable by the
end user.
Working with JavaBeans
Because a very common use case for a property sheet is editing properties on a JavaBean, there is convenience API for making this interaction easier. Refer to theclass
, in particular the
BeanPropertyUtils.getProperties(Object)
method that will return a
list of Item instances, one Item instance per property on the given JavaBean.- See Also:
-
Property Summary
PropertiesTypePropertyDescriptionfinal javafx.beans.property.SimpleObjectProperty
<Comparator<String>> Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
).final javafx.beans.property.SimpleObjectProperty
<PropertySheet.Mode> Used to represent how the properties should be laid out in the PropertySheet.final javafx.beans.property.SimpleBooleanProperty
This property represents whether a visual option should be presented to users to switch between the variousmodes
available.final javafx.beans.property.SimpleBooleanProperty
This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltip
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, 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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
A wrapper interface for a single property to be displayed in aPropertySheet
control.static enum
Specifies how thePropertySheet
should be laid out. -
Field Summary
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
ConstructorsConstructorDescriptionCreates a default PropertySheet instance with no properties to edit.PropertySheet
(javafx.collections.ObservableList<PropertySheet.Item> items) Creates a PropertySheet instance prepopulated with the items provided in the itemsObservableList
. -
Method Summary
Modifier and TypeMethodDescriptionfinal javafx.beans.property.SimpleObjectProperty
<Comparator<String>> Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
).protected javafx.scene.control.Skin
<?> final Comparator
<String> javafx.collections.ObservableList
<PropertySheet.Item> getItems()
final PropertySheet.Mode
getMode()
final javafx.util.Callback
<PropertySheet.Item, PropertyEditor<?>> final String
protected final String
getUserAgentStylesheet
(Class<?> clazz, String fileName) A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once.final boolean
final boolean
final javafx.beans.property.SimpleObjectProperty
<PropertySheet.Mode> Used to represent how the properties should be laid out in the PropertySheet.final javafx.beans.property.SimpleBooleanProperty
This property represents whether a visual option should be presented to users to switch between the variousmodes
available.final javafx.beans.property.SimpleObjectProperty
<javafx.util.Callback<PropertySheet.Item, PropertyEditor<?>>> The property editor factory is used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
.final javafx.beans.property.SimpleBooleanProperty
This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.final void
setCategoryComparator
(Comparator<String> categoryComparator) Set how the categories should be laid out in the PropertySheet.final void
setMode
(PropertySheet.Mode mode) Set how the properties should be laid out in the PropertySheet.final void
setModeSwitcherVisible
(boolean visible) Set whether a visual option should be presented to users to switch between the variousmodes
available.final void
setPropertyEditorFactory
(javafx.util.Callback<PropertySheet.Item, PropertyEditor<?>> factory) Sets a new editor factory used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
.final void
setSearchBoxVisible
(boolean visible) Sets whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.final void
setTitleFilter
(String filter) Sets the filter for filtering the options shown on screen.final javafx.beans.property.SimpleStringProperty
Regardless of whether thesearch box
is visible or not, it is possible to filter the options shown on screen using this title filter property.Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
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, 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 class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, 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, 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 interface javafx.css.Styleable
getStyleableNode
-
Property Details
-
mode
Used to represent how the properties should be laid out in the PropertySheet. Refer to thePropertySheet.Mode
enumeration to better understand the available options.- See Also:
-
modeSwitcherVisible
public final javafx.beans.property.SimpleBooleanProperty modeSwitcherVisiblePropertyThis property represents whether a visual option should be presented to users to switch between the variousmodes
available. By default this is true, so setting it to false will hide these buttons.- See Also:
-
searchBoxVisible
public final javafx.beans.property.SimpleBooleanProperty searchBoxVisiblePropertyThis property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input. By default this is true, so setting it to false will hide this search field.- See Also:
-
categoryComparator
public final javafx.beans.property.SimpleObjectProperty<Comparator<String>> categoryComparatorPropertyUsed to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
). Thus allowing user to sort categories by other ways than alphabetical or numerical order.- See Also:
-
-
Constructor Details
-
PropertySheet
public PropertySheet()Creates a default PropertySheet instance with no properties to edit. -
PropertySheet
Creates a PropertySheet instance prepopulated with the items provided in the itemsObservableList
.- Parameters:
items
- The items that should appear within the PropertySheet.
-
-
Method Details
-
getItems
- Returns:
- An ObservableList of properties that will be displayed to the user to allow for them to be edited.
-
createDefaultSkin
protected javafx.scene.control.Skin<?> createDefaultSkin()- Overrides:
createDefaultSkin
in classjavafx.scene.control.Control
-
getUserAgentStylesheet
- Overrides:
getUserAgentStylesheet
in classjavafx.scene.layout.Region
-
modeProperty
Used to represent how the properties should be laid out in the PropertySheet. Refer to thePropertySheet.Mode
enumeration to better understand the available options.- Returns:
- A SimpleObjectproperty.
- See Also:
-
getMode
- Returns:
- how the properties should be laid out in the PropertySheet.
- See Also:
-
setMode
Set how the properties should be laid out in the PropertySheet.- Parameters:
mode
-
-
propertyEditorFactory
public final javafx.beans.property.SimpleObjectProperty<javafx.util.Callback<PropertySheet.Item,PropertyEditor<?>>> propertyEditorFactory()The property editor factory is used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
. By default theDefaultPropertyEditorFactory
is used, but this may be replaced or extended by developers wishing to add in (or substitute) their own property editors.- Returns:
- A SimpleObjectproperty.
-
getPropertyEditorFactory
- Returns:
- The editor factory used by the PropertySheet to determine which
PropertyEditor
to use for a givenPropertySheet.Item
.
-
setPropertyEditorFactory
public final void setPropertyEditorFactory(javafx.util.Callback<PropertySheet.Item, PropertyEditor<?>> factory) Sets a new editor factory used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
.- Parameters:
factory
-
-
modeSwitcherVisibleProperty
public final javafx.beans.property.SimpleBooleanProperty modeSwitcherVisibleProperty()This property represents whether a visual option should be presented to users to switch between the variousmodes
available. By default this is true, so setting it to false will hide these buttons.- Returns:
- A SimpleBooleanproperty.
- See Also:
-
isModeSwitcherVisible
public final boolean isModeSwitcherVisible()- Returns:
- whether a visual option is presented to
users to switch between the various
modes
available.
-
setModeSwitcherVisible
public final void setModeSwitcherVisible(boolean visible) Set whether a visual option should be presented to users to switch between the variousmodes
available.- Parameters:
visible
-
-
searchBoxVisibleProperty
public final javafx.beans.property.SimpleBooleanProperty searchBoxVisibleProperty()This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input. By default this is true, so setting it to false will hide this search field.- Returns:
- A SimpleBooleanProperty.
- See Also:
-
isSearchBoxVisible
public final boolean isSearchBoxVisible()- Returns:
- whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.
-
setSearchBoxVisible
public final void setSearchBoxVisible(boolean visible) Sets whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.- Parameters:
visible
-
-
titleFilter
public final javafx.beans.property.SimpleStringProperty titleFilter()Regardless of whether thesearch box
is visible or not, it is possible to filter the options shown on screen using this title filter property. If the search box is visible, it will manipulate this property to contain whatever the user types.- Returns:
- A SimpleStringProperty.
-
getTitleFilter
- Returns:
- the filter for filtering the options shown on screen
- See Also:
-
setTitleFilter
Sets the filter for filtering the options shown on screen.- Parameters:
filter
-- See Also:
-
categoryComparatorProperty
public final javafx.beans.property.SimpleObjectProperty<Comparator<String>> categoryComparatorProperty()Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
). Thus allowing user to sort categories by other ways than alphabetical or numerical order.- Returns:
- A SimpleObjectproperty.
- See Also:
-
getCategoryComparator
- Returns:
- how the categories should be laid out in the PropertySheet.
- See Also:
-
setCategoryComparator
Set how the categories should be laid out in the PropertySheet.- Parameters:
mode
-
-
getUserAgentStylesheet
A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once. Caches the external form of the resource.- Parameters:
clazz
- the class used for the resource lookupfileName
- the name of the user agent stylesheet- Returns:
- the external form of the user agent stylesheet (the path)
-