package com.vaadin.tests.components.nativeselect; import com.vaadin.annotations.DesignRoot; import com.vaadin.server.VaadinRequest; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.ItemCaptionGenerator; import com.vaadin.ui.NativeSelect; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.declarative.Design; public class NativeSelectCaptionGeneration extends UI { @DesignRoot public static class TestComponent extends VerticalLayout { HorizontalLayout buttons; NativeSelect nativeSelect; public TestComponent() { Design.read(this); // Store the declarative with to string fallback ItemCaptionGenerator declarative = nativeSelect .getItemCaptionGenerator(); buttons.addComponents( new Button("toString", event -> nativeSelect .setItemCaptionGenerator(String::toString)), new Button("Only number", event -> nativeSelect.setItemCaptionGenerator( str -> str.substring(7))), new Button("Declarative", event -> nativeSelect .setItemCaptionGenerator(declarative))); } } @Override protected void init(VaadinRequest request) { setContent(new TestComponent()); } }