Class PrefixSelectionComboBox<T>

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:
javafx.css.Styleable, javafx.event.EventTarget, javafx.scene.control.Skinnable

public class PrefixSelectionComboBox<T> extends javafx.scene.control.ComboBox<T>
A simple extension of the ComboBox 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 the ComboBox 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 typedElement selected
    aAaaaa
    aaaAaaaa
    abAbbbb
    abcAbccc
    xyz-

If you want to modify an existing ComboBox you can use the PrefixSelectionCustomizer directly to do this.

See Also:
  • PrefixSelectionCustomizer
  • Property Summary

    Properties
    Type
    Property
    Description
    final javafx.beans.property.BooleanProperty
    When allowed, the user can press on the back space to clear the current selection.
    final javafx.beans.property.BooleanProperty
    When enabled, the ComboBox will display its popup upon focus gained.
    final javafx.beans.property.ObjectProperty<BiFunction<javafx.scene.control.ComboBox,String,Optional>>
    Allows setting a custom search criteria, based on the control and the typed selection.
    final javafx.beans.property.IntegerProperty
    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
    Create a non editable ComboBox with the "prefix selection" feature installed.
  • Method Summary

    Modifier and Type
    Method
    Description
    final javafx.beans.property.BooleanProperty
    When allowed, the user can press on the back space to clear the current selection.
    final javafx.beans.property.BooleanProperty
    When enabled, the ComboBox will display its popup upon focus gained.
    final BiFunction<javafx.scene.control.ComboBox,String,Optional>
    Gets the value of the lookup property.
    final int
    Gets the value of the typingDelay property.
    final boolean
    Gets the value of the backSpaceAllowed property.
    final boolean
    Gets the value of the displayOnFocusedEnabled property.
    final javafx.beans.property.ObjectProperty<BiFunction<javafx.scene.control.ComboBox,String,Optional>>
    Allows setting a custom search criteria, based on the control and the typed selection.
    final void
    setBackSpaceAllowed(boolean value)
    Sets the value of the backSpaceAllowed property.
    final void
    Sets the value of the displayOnFocusedEnabled property.
    final void
    setLookup(BiFunction<javafx.scene.control.ComboBox,String,Optional> value)
    Sets the value of the lookup property.
    final void
    setTypingDelay(int value)
    Sets the value of the typingDelay property.
    final javafx.beans.property.IntegerProperty
    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 Details

  • Constructor Details

    • PrefixSelectionComboBox

      public PrefixSelectionComboBox()
      Create a non editable ComboBox with the "prefix selection" feature installed.
  • Method Details

    • isDisplayOnFocusedEnabled

      public final boolean isDisplayOnFocusedEnabled()
      Gets the value of the displayOnFocusedEnabled property.
      Property description:
      When enabled, the ComboBox will display its popup upon focus gained. Default is false
      Returns:
      the value of the displayOnFocusedEnabled property
      See Also:
    • setDisplayOnFocusedEnabled

      public final void setDisplayOnFocusedEnabled(boolean value)
      Sets the value of the displayOnFocusedEnabled property.
      Property description:
      When enabled, the ComboBox will display its popup upon focus gained. Default is false
      Parameters:
      value - the value for the displayOnFocusedEnabled property
      See Also:
    • displayOnFocusedEnabledProperty

      public final javafx.beans.property.BooleanProperty displayOnFocusedEnabledProperty()
      When enabled, the ComboBox will display its popup upon focus gained. Default is false
      Returns:
      the displayOnFocusedEnabled property
      See Also:
    • isBackSpaceAllowed

      public final boolean isBackSpaceAllowed()
      Gets the value of the backSpaceAllowed property.
      Property description:
      When allowed, the user can press on the back space to clear the current selection. Default is false
      Returns:
      the value of the backSpaceAllowed property
      See Also:
    • setBackSpaceAllowed

      public final void setBackSpaceAllowed(boolean value)
      Sets the value of the backSpaceAllowed property.
      Property description:
      When allowed, the user can press on the back space to clear the current selection. Default is false
      Parameters:
      value - the value for the backSpaceAllowed property
      See Also:
    • backSpaceAllowedProperty

      public final javafx.beans.property.BooleanProperty backSpaceAllowedProperty()
      When allowed, the user can press on the back space to clear the current selection. Default is false
      Returns:
      the backSpaceAllowed property
      See Also:
    • getTypingDelay

      public final int getTypingDelay()
      Gets the value of the typingDelay property.
      Property description:
      Allows setting the delay until the current selection is reset, in ms. Default is 500 ms
      Returns:
      the value of the typingDelay property
      See Also:
    • setTypingDelay

      public final void setTypingDelay(int value)
      Sets the value of the typingDelay property.
      Property description:
      Allows setting the delay until the current selection is reset, in ms. Default is 500 ms
      Parameters:
      value - the value for the typingDelay property
      See Also:
    • typingDelayProperty

      public final javafx.beans.property.IntegerProperty typingDelayProperty()
      Allows setting the delay until the current selection is reset, in ms. Default is 500 ms
      Returns:
      the typingDelay property
      See Also:
    • getLookup

      public final BiFunction<javafx.scene.control.ComboBox,String,Optional> getLookup()
      Gets the value of the lookup property.
      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.
      Returns:
      the value of the lookup property
      See Also:
    • setLookup

      public final void setLookup(BiFunction<javafx.scene.control.ComboBox,String,Optional> value)
      Sets the value of the lookup property.
      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.
      Parameters:
      value - the value for the lookup property
      See Also:
    • lookupProperty

      public final javafx.beans.property.ObjectProperty<BiFunction<javafx.scene.control.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.
      Returns:
      the lookup property
      See Also: