This utility class can be used to customize a ChoiceBox or
ComboBox and enable the "prefix selection" feature. This will enable
the user to type letters or digits on the keyboard while the ChoiceBox
or ComboBox has the focus.
By default, the ChoiceBox or ComboBox
will attempt to select the first item it can find with a matching prefix ignoring
case.
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 ContorlsFX 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 | - |
Usage
A common use case is to customize a ChoiceBox or ComboBox
that has been loaded as part of an FXML. In this case you can use the utility
methods customize(ChoiceBox) or customize(ComboBox). This
will install a EventHandler that monitors the KeyEvent
events.
If you are coding, you can also use the preconfigured classes
PrefixSelectionChoiceBox and PrefixSelectionComboBox as a
substitute for ChoiceBox and ComboBox.
In this case, PrefixSelectionComboBox includes some properties that will
allow modifying the elapsed time before the selection is clear, listen to back
space to clear the selection, show the popup when the control gains the focus,
or set a different lookup criteria.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final BiFunction<ChoiceBox,String, Optional> static final BiFunction<ComboBox,String, Optional> static final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidThis will install anEventHandlerthat monitors theKeyEventevents to enable the "prefix selection" feature.static voidThis will install anEventHandlerthat monitors theKeyEventevents to enable the "prefix selection" feature.
-
Field Details
-
DEFAULT_TYPING_DELAY
public static final int DEFAULT_TYPING_DELAY- See Also:
-
DEFAULT_LOOKUP_COMBOBOX
-
DEFAULT_LOOKUP_CHOICEBOX
-
-
Constructor Details
-
PrefixSelectionCustomizer
public PrefixSelectionCustomizer()
-
-
Method Details
-
customize
This will install anEventHandlerthat monitors theKeyEventevents to enable the "prefix selection" feature. TheEventHandlerwill only be installed if theComboBoxis not editable.- Parameters:
comboBox- TheComboBoxthat should be customized- See Also:
-
customize
This will install anEventHandlerthat monitors theKeyEventevents to enable the "prefix selection" feature.- Parameters:
choiceBox- TheChoiceBoxthat should be customized- See Also:
-