com.vaadin.flow.component.combobox.

Class ComboBox<T>

    • Constructor Detail

      • ComboBox

        public ComboBox(int pageSize)

        Creates an empty combo box with the defined page size for lazy loading.

        The default page size is 50.

        The page size is also the largest number of items that can support client-side filtering. If you provide more items than the page size, the component has to fall back to server-side filtering.

        Parameters:

        pageSize - the amount of items to request at a time for lazy loading

        See Also:

        #setPageSize(int)}

      • ComboBox

        public ComboBox()

        Default constructor. Creates an empty combo box.

      • ComboBox

        public ComboBox(String label)

        Creates an empty combo box with the defined label.

        Parameters:

        label - the label describing the combo box

      • ComboBox

        public ComboBox(String label,
                        Collection<T> items)

        Creates a combo box with the defined label and populated with the items in the collection.

        Parameters:

        label - the label describing the combo box

        items - the items to be shown in the list of the combo box

        See Also:

        setItems(Collection)

      • ComboBox

        @SafeVarargs
        public ComboBox(String label,
                                     T... items)

        Creates a combo box with the defined label and populated with the items in the array.

        Parameters:

        label - the label describing the combo box

        items - the items to be shown in the list of the combo box

        See Also:

        HasItems.setItems(Object...)

    • Method Detail

      • setRenderer

        public void setRenderer(Renderer<T> renderer)

        Sets the TemplateRenderer responsible to render the individual items in the list of possible choices of the ComboBox. It doesn't affect how the selected item is rendered - that can be configured by using setItemLabelGenerator(ItemLabelGenerator).

        Parameters:

        renderer - a renderer for the items in the selection list of the ComboBox, not null

      • setItems

        public void setItems(Collection<T> items)

        Sets the data items of this component provided as a collection.

        The provided collection instance may be used as-is. Subsequent modification of the collection might cause inconsistent data to be shown in the component unless it is explicitly instructed to read the data again.

        Filtering will use a case insensitive match to show all items where the filter text is a substring of the label displayed for that item, which you can configure with setItemLabelGenerator(ItemLabelGenerator).

        Filtering will be handled in the client-side if the size of the data set is less than the page size. To force client-side filtering with a larger data set (at the cost of increased network traffic), you can increase the page size with setPageSize(int).

        Specified by:

        setItems in interface HasItems<T>

        Parameters:

        items - the data items to display, not null

      • setItems

        public void setItems(ComboBox.ItemFilter<T> itemFilter,
                             Collection<T> items)

        Sets the data items of this combo box and a filtering function for defining which items are displayed when user types into the combo box.

        Note that defining a custom filter will force the component to make server roundtrips to handle the filtering. Otherwise it can handle filtering in the client-side, if the size of the data set is less than the pageSize.

        Parameters:

        itemFilter - filter to check if an item is shown when user typed some text into the ComboBox

        items - the data items to display

      • setItems

        public void setItems(ComboBox.ItemFilter<T> itemFilter,
                             T... items)

        Sets the data items of this combo box and a filtering function for defining which items are displayed when user types into the combo box.

        Note that defining a custom filter will force the component to make server roundtrips to handle the filtering. Otherwise it can handle filtering in the client-side, if the size of the data set is less than the pageSize.

        Parameters:

        itemFilter - filter to check if an item is shown when user typed some text into the ComboBox

        items - the data items to display

      • setDataProvider

        public <C> void setDataProvider(DataProvider<T,C> dataProvider,
                                        SerializableFunction<String,C> filterConverter)

        Sets the data provider and filter converter for this listing. The data provider is queried for displayed items as needed.

        ComboBox triggers filtering queries based on the strings users type into the field. For this reason you need to provide the second parameter, a function which converts the filter-string typed by the user into filter-type used by your data provider. If your data provider already supports String as the filter-type, it can be used without a converter function via setDataProvider(DataProvider).

        Using this method provides the same result as using a data provider wrapped with DataProvider.withConvertedFilter(SerializableFunction).

        Specified by:

        setDataProvider in interface HasFilterableDataProvider<T,String>

        Type Parameters:

        C - the filter type

        Parameters:

        dataProvider - the data provider, not null

        filterConverter - a function that converts filter values produced by this listing into filter values expected by the provided data provider, not null

      • setDataProvider

        public void setDataProvider(ListDataProvider<T> listDataProvider)

        Sets a list data provider as the data provider of this combo box.

        Filtering will use a case insensitive match to show all items where the filter text is a substring of the label displayed for that item, which you can configure with setItemLabelGenerator(ItemLabelGenerator).

        Filtering will be handled in the client-side if the size of the data set is less than the page size. To force client-side filtering with a larger data set (at the cost of increased network traffic), you can increase the page size with setPageSize(int).

        Parameters:

        listDataProvider - the list data provider to use, not null

      • setDataProvider

        public void setDataProvider(ComboBox.ItemFilter<T> itemFilter,
                                    ListDataProvider<T> listDataProvider)

        Sets a list data provider with an item filter as the data provider of this combo box. The item filter is used to compare each item to the filter text entered by the user.

        Note that defining a custom filter will force the component to make server roundtrips to handle the filtering. Otherwise it can handle filtering in the client-side, if the size of the data set is less than the pageSize.

        Parameters:

        itemFilter - filter to check if an item is shown when user typed some text into the ComboBox

        listDataProvider - the list data provider to use, not null

      • getDataProvider

        public DataProvider<T,?> getDataProvider()

        Gets the data provider used by this ComboBox.

        Returns:

        the data provider used by this ComboBox

      • setItemLabelGenerator

        public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator)

        Sets the item label generator that is used to produce the strings shown in the combo box for each item. By default, String.valueOf(Object) is used.

        When the setRenderer(Renderer) is used, the ItemLabelGenerator is only used to show the selected item label.

        Parameters:

        itemLabelGenerator - the item label provider to use, not null

      • getItemLabelGenerator

        public ItemLabelGenerator<T> getItemLabelGenerator()

        Gets the item label generator that is used to produce the strings shown in the combo box for each item.

        Returns:

        the item label generator used, not null

      • setPageSize

        public void setPageSize(int pageSize)

        Sets the page size, which is the number of items fetched at a time from the data provider.

        The page size is also the largest number of items that can support client-side filtering. If you provide more items than the page size, the component has to fall back to server-side filtering.

        Setting the page size after the ComboBox has been rendered effectively resets the component, and the current page(s) and sent over again.

        The default page size is 50.

        Parameters:

        pageSize - the maximum number of items sent per request, should be greater than zero

      • getPageSize

        public int getPageSize()

        Gets the page size, which is the number of items fetched at a time from the data provider.

        The page size is also the largest number of items that can support client-side filtering. If you provide more items than the page size, the component has to fall back to server-side filtering.

        The default page size is 50.

        Returns:

        the maximum number of items sent per request

        See Also:

        #setPageSize(int)}

      • setOpened

        public void setOpened(boolean opened)

        Description copied from class: GeneratedVaadinComboBox

        Description copied from corresponding location in WebComponent:

        True if the dropdown is open, false otherwise.

        Overrides:

        setOpened in class GeneratedVaadinComboBox<ComboBox<T>,T>

        Parameters:

        opened - the boolean value to set

      • isOpened

        public boolean isOpened()

        Gets the states of the drop-down.

        Returns:

        true if the drop-down is opened, false otherwise

      • isInvalid

        public boolean isInvalid()

        Gets the validity of the combobox output.

        return true, if the value is invalid.

        Specified by:

        isInvalid in interface HasValidation

        Returns:

        the validity property from the component

      • getErrorMessage

        public String getErrorMessage()

        Gets the current error message from the combobox.

        Specified by:

        getErrorMessage in interface HasValidation

        Returns:

        the current error message

      • setAllowCustomValue

        public void setAllowCustomValue(boolean allowCustomValue)

        Description copied from class: GeneratedVaadinComboBox

        Description copied from corresponding location in WebComponent:

        If true, the user can input a value that is not present in the items list. value property will be set to the input value in this case. Also, when value is set programmatically, the input value will be set to reflect that value.

        Overrides:

        setAllowCustomValue in class GeneratedVaadinComboBox<ComboBox<T>,T>

        Parameters:

        allowCustomValue - the boolean value to set

      • isAllowCustomValue

        public boolean isAllowCustomValue()

        If true, the user can input a value that is not present in the items list. value property will be set to the input value in this case. Also, when value is set programmatically, the input value will be set to reflect that value.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:

        the allowCustomValue property from the combobox

      • setAutofocus

        public void setAutofocus(boolean autofocus)

        Set the combobox to be input focused when the page loads.

        Overrides:

        setAutofocus in class GeneratedVaadinComboBox<ComboBox<T>,T>

        Parameters:

        autofocus - the boolean value to set

      • isAutofocus

        public boolean isAutofocus()

        Get the state for the auto-focus property of the combobox.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:

        the autofocus property from the combobox

      • setPreventInvalidInput

        public void setPreventInvalidInput(boolean preventInvalidInput)

        Description copied from class: GeneratedVaadinComboBox

        Description copied from corresponding location in WebComponent:

        Set to true to prevent the user from entering invalid input.

        Overrides:

        setPreventInvalidInput in class GeneratedVaadinComboBox<ComboBox<T>,T>

        Parameters:

        preventInvalidInput - the boolean value to set

      • isPreventInvalidInput

        public boolean isPreventInvalidInput()

        Determines whether preventing the user from inputing invalid value.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:

        the preventInvalidInput property of the combobox

      • setRequired

        public void setRequired(boolean required)

        Description copied from class: GeneratedVaadinComboBox

        Description copied from corresponding location in WebComponent:

        Set to true to mark the input as required.

        Overrides:

        setRequired in class GeneratedVaadinComboBox<ComboBox<T>,T>

        Parameters:

        required - the boolean value to set

      • isRequired

        public boolean isRequired()

        Determines whether the combobox is marked as input required.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:

        true if the input is required, false otherwise

      • getLabel

        public String getLabel()

        Gets the label of the combobox.

        Returns:

        the label property of the combobox

      • getPlaceholder

        public String getPlaceholder()

        Gets the placeholder of the combobox.

        Returns:

        the placeholder property of the combobox

      • getPattern

        public String getPattern()

        Gets the valid input pattern

        Returns:

        the pattern property of the combobox

      • setRequiredIndicatorVisible

        public void setRequiredIndicatorVisible(boolean requiredIndicatorVisible)

        Description copied from interface: HasValue

        Sets the required indicator visible or not.

        If set visible, it is visually indicated in the user interface.

        The method is intended to be used with Binder which does server-side validation. In case HTML element has its own (client-side) validation it should be disabled when setRequiredIndicatorVisible(true) is called and re-enabled back on setRequiredIndicatorVisible(false). It's responsibility of each component implementation to follow the contract so that the method call doesn't do anything else than show/hide the "required" indication. Usually components provide their own setRequired method which should be called in case the client-side validation is required.

        Specified by:

        setRequiredIndicatorVisible in interface HasValue<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>

        Specified by:

        setRequiredIndicatorVisible in interface HasValueAndElement<AbstractField.ComponentValueChangeEvent<ComboBox<T>,T>,T>

        Parameters:

        requiredIndicatorVisible - true to make the required indicator visible, false if not