- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- javafx.scene.control.ComboBoxBase<T>
-
- javafx.scene.control.ComboBox<T>
-
- org.controlsfx.control.PrefixSelectionComboBox<T>
-
- All Implemented Interfaces:
Styleable
,EventTarget
,Skinnable
public class PrefixSelectionComboBox<T> extends ComboBox<T>
A simple extension of theComboBox
which selects an entry of its item list based on keyboard input. The user can type letters or digits on the keyboard and the control will attempt to select the first item it can find with a matching prefix. This will only be enabled, when theComboBox
is not editable, so this class will be setup as non editable by default.This feature is available natively on the Windows combo box control, so many users have asked for it. There is a feature request to include this feature into JavaFX (Issue RT-18064). The class is published as part of ControlsFX to allow testing and feedback.
Example
Let's look at an example to clarify this. The combo box offers the items ["Aaaaa", "Abbbb", "Abccc", "Abcdd", "Abcde"]. The user now types "abc" in quick succession (and then stops typing). The combo box will select a new entry on every key pressed. The first entry it will select is "Aaaaa" since it is the first entry that starts with an "a" (case ignored). It will then select "Abbbb", since this is the first entry that started with "ab" and will finally settle for "Abccc".
Keys typed Element selected a Aaaaa aaa Aaaaa ab Abbbb abc Abccc xyz - If you want to modify an existing
ComboBox
you can use thePrefixSelectionCustomizer
directly to do this.- See Also:
PrefixSelectionCustomizer
-
-
Property Summary
Properties Type Property Description BooleanProperty
backSpaceAllowed
When allowed, the user can press on the back space to clear the current selection.BooleanProperty
displayOnFocusedEnabled
When enabled, theComboBox
will display its popup upon focus gained.ObjectProperty<BiFunction<ComboBox,String,Optional>>
lookup
Allows setting a custom search criteria, based on the control and the typed selection.IntegerProperty
typingDelay
Allows setting the delay until the current selection is reset, in ms.-
Properties inherited from class javafx.scene.control.ComboBox
buttonCell, cellFactory, converter, editor, items, placeholder, selectionModel, visibleRowCount
-
Properties inherited from class javafx.scene.control.ComboBoxBase
armed, editable, onAction, onHidden, onHiding, onShowing, onShown, promptText, showing, value
-
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
-
-
Field Summary
-
Fields inherited from class javafx.scene.control.ComboBoxBase
ON_HIDDEN, ON_HIDING, ON_SHOWING, ON_SHOWN
-
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 Constructor Description PrefixSelectionComboBox()
Create a non editableComboBox
with the "prefix selection" feature installed.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BooleanProperty
backSpaceAllowedProperty()
When allowed, the user can press on the back space to clear the current selection.BooleanProperty
displayOnFocusedEnabledProperty()
When enabled, theComboBox
will display its popup upon focus gained.BiFunction<ComboBox,String,Optional>
getLookup()
Gets the value of the property lookup.int
getTypingDelay()
Gets the value of the property typingDelay.boolean
isBackSpaceAllowed()
Gets the value of the property backSpaceAllowed.boolean
isDisplayOnFocusedEnabled()
Gets the value of the property displayOnFocusedEnabled.ObjectProperty<BiFunction<ComboBox,String,Optional>>
lookupProperty()
Allows setting a custom search criteria, based on the control and the typed selection.void
setBackSpaceAllowed(boolean value)
Sets the value of the property backSpaceAllowed.void
setDisplayOnFocusedEnabled(boolean value)
Sets the value of the property displayOnFocusedEnabled.void
setLookup(BiFunction<ComboBox,String,Optional> value)
Sets the value of the property lookup.void
setTypingDelay(int value)
Sets the value of the property typingDelay.IntegerProperty
typingDelayProperty()
Allows setting the delay until the current selection is reset, in ms.-
Methods inherited from class javafx.scene.control.ComboBox
buttonCellProperty, cancelEdit, cellFactoryProperty, commitValue, converterProperty, createDefaultSkin, editorProperty, getButtonCell, getCellFactory, getConverter, getEditor, getItems, getPlaceholder, getSelectionModel, getVisibleRowCount, itemsProperty, placeholderProperty, queryAccessibleAttribute, selectionModelProperty, setButtonCell, setCellFactory, setConverter, setItems, setPlaceholder, setSelectionModel, setVisibleRowCount, visibleRowCountProperty
-
Methods inherited from class javafx.scene.control.ComboBoxBase
arm, armedProperty, disarm, editableProperty, executeAccessibleAction, getOnAction, getOnHidden, getOnHiding, getOnShowing, getOnShown, getPromptText, getValue, hide, isArmed, isEditable, isShowing, onActionProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, promptTextProperty, setEditable, setOnAction, setOnHidden, setOnHiding, setOnShowing, setOnShown, setPromptText, setValue, show, showingProperty, valueProperty
-
Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, 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, 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 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 Detail
-
displayOnFocusedEnabled
public final BooleanProperty displayOnFocusedEnabledProperty
When enabled, theComboBox
will display its popup upon focus gained. Default is false
-
backSpaceAllowed
public final BooleanProperty backSpaceAllowedProperty
When allowed, the user can press on the back space to clear the current selection. Default is false- See Also:
isBackSpaceAllowed()
,setBackSpaceAllowed(boolean)
-
typingDelay
public final IntegerProperty typingDelayProperty
Allows setting the delay until the current selection is reset, in ms. Default is 500 ms- See Also:
getTypingDelay()
,setTypingDelay(int)
-
lookup
public final ObjectProperty<BiFunction<ComboBox,String,Optional>> lookupProperty
Allows setting a custom search criteria, based on the control and the typed selection. The default criteria searchs for the first matching item that starts with the typed selection, being case insenstitive.- See Also:
getLookup()
,setLookup(BiFunction)
-
-
Constructor Detail
-
PrefixSelectionComboBox
public PrefixSelectionComboBox()
Create a non editableComboBox
with the "prefix selection" feature installed.
-
-
Method Detail
-
isDisplayOnFocusedEnabled
public final boolean isDisplayOnFocusedEnabled()
Gets the value of the property displayOnFocusedEnabled.- Property description:
- When enabled, the
ComboBox
will display its popup upon focus gained. Default is false
-
setDisplayOnFocusedEnabled
public final void setDisplayOnFocusedEnabled(boolean value)
Sets the value of the property displayOnFocusedEnabled.- Property description:
- When enabled, the
ComboBox
will display its popup upon focus gained. Default is false
-
displayOnFocusedEnabledProperty
public final BooleanProperty displayOnFocusedEnabledProperty()
When enabled, theComboBox
will display its popup upon focus gained. Default is false
-
isBackSpaceAllowed
public final boolean isBackSpaceAllowed()
Gets the value of the property backSpaceAllowed.- Property description:
- When allowed, the user can press on the back space to clear the current selection. Default is false
-
setBackSpaceAllowed
public final void setBackSpaceAllowed(boolean value)
Sets the value of the property backSpaceAllowed.- Property description:
- When allowed, the user can press on the back space to clear the current selection. Default is false
-
backSpaceAllowedProperty
public final BooleanProperty backSpaceAllowedProperty()
When allowed, the user can press on the back space to clear the current selection. Default is false- See Also:
isBackSpaceAllowed()
,setBackSpaceAllowed(boolean)
-
getTypingDelay
public final int getTypingDelay()
Gets the value of the property typingDelay.- Property description:
- Allows setting the delay until the current selection is reset, in ms. Default is 500 ms
-
setTypingDelay
public final void setTypingDelay(int value)
Sets the value of the property typingDelay.- Property description:
- Allows setting the delay until the current selection is reset, in ms. Default is 500 ms
-
typingDelayProperty
public final IntegerProperty typingDelayProperty()
Allows setting the delay until the current selection is reset, in ms. Default is 500 ms- See Also:
getTypingDelay()
,setTypingDelay(int)
-
getLookup
public final BiFunction<ComboBox,String,Optional> getLookup()
Gets the value of the property lookup.- Property description:
- Allows setting a custom search criteria, based on the control and the typed selection. The default criteria searchs for the first matching item that starts with the typed selection, being case insenstitive.
-
setLookup
public final void setLookup(BiFunction<ComboBox,String,Optional> value)
Sets the value of the property lookup.- Property description:
- Allows setting a custom search criteria, based on the control and the typed selection. The default criteria searchs for the first matching item that starts with the typed selection, being case insenstitive.
-
lookupProperty
public final ObjectProperty<BiFunction<ComboBox,String,Optional>> lookupProperty()
Allows setting a custom search criteria, based on the control and the typed selection. The default criteria searchs for the first matching item that starts with the typed selection, being case insenstitive.- See Also:
getLookup()
,setLookup(BiFunction)
-
-