Comprehensive Java web application development framework that enables server-side Java development with modern web UI components and automatic client-server communication.
Vaadin provides a comprehensive set of UI components for building modern web applications. All components are server-side Java objects that automatically synchronize with the client-side browser representation.
// Basic UI components
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.component.textfield.TextArea;
import com.vaadin.flow.component.textfield.PasswordField;
import com.vaadin.flow.component.textfield.NumberField;
import com.vaadin.flow.component.textfield.IntegerField;
import com.vaadin.flow.component.textfield.EmailField;
// Selection components
import com.vaadin.flow.component.checkbox.Checkbox;
import com.vaadin.flow.component.checkbox.CheckboxGroup;
import com.vaadin.flow.component.radiobutton.RadioButtonGroup;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.combobox.MultiSelectComboBox;
import com.vaadin.flow.component.select.Select;
import com.vaadin.flow.component.listbox.ListBox;
import com.vaadin.flow.component.listbox.MultiSelectListBox;
// Date and time components
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.timepicker.TimePicker;
import com.vaadin.flow.component.datetimepicker.DateTimePicker;
// File upload and visual feedback
import com.vaadin.flow.component.upload.Upload;
import com.vaadin.flow.component.progressbar.ProgressBar;
// Visual components
import com.vaadin.flow.component.avatar.Avatar;
import com.vaadin.flow.component.avatar.AvatarGroup;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
// Core interfaces and types
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.HasValue;
import com.vaadin.flow.component.AbstractField;
import com.vaadin.flow.data.provider.HasDataProvider;
import com.vaadin.flow.shared.Registration;
// Event handling
import com.vaadin.flow.component.ComponentEventListener;
import com.vaadin.flow.component.ClickEvent;
import com.vaadin.flow.component.ValueChangeEvent;
// Theme variants
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.avatar.AvatarVariant;Clickable button component with various styles and event handling.
public class Button extends Component implements ClickNotifier<Button>, HasText, HasTheme {
public Button();
public Button(String text);
public Button(String text, ComponentEventListener<ClickEvent<Button>> clickListener);
public Button(Icon icon);
public Button(Icon icon, ComponentEventListener<ClickEvent<Button>> clickListener);
public void setText(String text);
public String getText();
public void setIcon(Component icon);
public Component getIcon();
public Registration addClickListener(ComponentEventListener<ClickEvent<Button>> listener);
public void click();
public void setDisableOnClick(boolean disableOnClick);
public void addThemeVariants(ButtonVariant... variants);
}Single-line text input field with validation and formatting options.
public class TextField extends AbstractField<TextField, String> implements HasAutocomplete, HasPrefixAndSuffix {
public TextField();
public TextField(String label);
public TextField(String label, String placeholder);
public TextField(String label, String initialValue, String placeholder);
public TextField(ValueChangeListener<ComponentValueChangeEvent<TextField, String>> listener);
public void setPlaceholder(String placeholder);
public String getPlaceholder();
public void setPattern(String pattern);
public String getPattern();
public void setMinLength(int minLength);
public int getMinLength();
public void setMaxLength(int maxLength);
public int getMaxLength();
public void setAutoselect(boolean autoselect);
public boolean isAutoselect();
public void setClearButtonVisible(boolean clearButtonVisible);
public void setValueChangeMode(ValueChangeMode valueChangeMode);
}Multi-line text input area with resizing and character counting.
public class TextArea extends AbstractField<TextArea, String> implements HasAutocomplete {
public TextArea();
public TextArea(String label);
public TextArea(String label, String placeholder);
public TextArea(ValueChangeListener<ComponentValueChangeEvent<TextArea, String>> listener);
public void setMinHeight(String minHeight);
public void setMaxHeight(String maxHeight);
public void setMinLength(int minLength);
public void setMaxLength(int maxLength);
public void setClearButtonVisible(boolean clearButtonVisible);
public void setResizable(boolean resizable);
}Password input field with visibility toggle and strength validation.
public class PasswordField extends TextField {
public PasswordField();
public PasswordField(String label);
public PasswordField(String label, String placeholder);
public PasswordField(ValueChangeListener<ComponentValueChangeEvent<PasswordField, String>> listener);
public void setRevealButtonVisible(boolean revealButtonVisible);
public boolean isRevealButtonVisible();
}Numeric input field with step controls and validation.
public class NumberField extends AbstractField<NumberField, Double> {
public NumberField();
public NumberField(String label);
public NumberField(ValueChangeListener<ComponentValueChangeEvent<NumberField, Double>> listener);
public void setMin(double min);
public double getMin();
public void setMax(double max);
public double getMax();
public void setStep(double step);
public double getStep();
public void setHasControls(boolean hasControls);
public boolean isHasControls();
}Integer-specific numeric input with validation.
public class IntegerField extends AbstractField<IntegerField, Integer> {
public IntegerField();
public IntegerField(String label);
public IntegerField(ValueChangeListener<ComponentValueChangeEvent<IntegerField, Integer>> listener);
public void setMin(int min);
public int getMin();
public void setMax(int max);
public int getMax();
public void setStep(int step);
public int getStep();
public void setHasControls(boolean hasControls);
}Email input field with built-in validation and formatting.
public class EmailField extends TextField {
public EmailField();
public EmailField(String label);
public EmailField(String label, String placeholder);
public EmailField(ValueChangeListener<ComponentValueChangeEvent<EmailField, String>> listener);
}Boolean checkbox input with indeterminate state support.
public class Checkbox extends AbstractSinglePropertyField<Checkbox, Boolean> implements ClickNotifier<Checkbox> {
public Checkbox();
public Checkbox(String labelText);
public Checkbox(boolean initialValue);
public Checkbox(String labelText, boolean initialValue);
public void setLabel(String label);
public String getLabel();
public void setIndeterminate(boolean indeterminate);
public boolean isIndeterminate();
public void setAriaLabel(String ariaLabel);
public Registration addClickListener(ComponentEventListener<ClickEvent<Checkbox>> listener);
}Multi-select checkbox group for choosing multiple options.
public class CheckboxGroup<T> extends AbstractField<CheckboxGroup<T>, Set<T>> implements HasDataProvider<T>, HasItemComponents<T> {
public CheckboxGroup();
public CheckboxGroup(String label);
public CheckboxGroup(String label, Collection<T> items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setDataProvider(DataProvider<T, ?> dataProvider);
public DataProvider<T, ?> getDataProvider();
public void setReadOnly(boolean readOnly);
public void select(T... items);
public void deselect(T... items);
}Single-select radio button group for choosing one option from multiple.
public class RadioButtonGroup<T> extends AbstractField<RadioButtonGroup<T>, T> implements HasDataProvider<T> {
public RadioButtonGroup();
public RadioButtonGroup(String label);
public RadioButtonGroup(String label, Collection<T> items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setDataProvider(DataProvider<T, ?> dataProvider);
public DataProvider<T, ?> getDataProvider();
public void setReadOnly(boolean readOnly);
}Dropdown selection with filtering and custom item rendering.
public class ComboBox<T> extends AbstractField<ComboBox<T>, T> implements HasDataProvider<T>, HasFilterableDataProvider<T, String> {
public ComboBox();
public ComboBox(String label);
public ComboBox(String label, Collection<T> items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setDataProvider(DataProvider<T, ?> dataProvider);
public void setPageSize(int pageSize);
public int getPageSize();
public void setAllowCustomValue(boolean allowCustomValue);
public boolean isAllowCustomValue();
public void setAutoOpen(boolean autoOpen);
public void setClearButtonVisible(boolean clearButtonVisible);
public void setPlaceholder(String placeholder);
public void open();
public void close();
}Multi-select dropdown with filtering and tag display.
public class MultiSelectComboBox<T> extends AbstractField<MultiSelectComboBox<T>, Set<T>> implements HasDataProvider<T> {
public MultiSelectComboBox();
public MultiSelectComboBox(String label);
public MultiSelectComboBox(String label, Collection<T> items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setDataProvider(DataProvider<T, ?> dataProvider);
public void setPageSize(int pageSize);
public void setAutoOpen(boolean autoOpen);
public void setClearButtonVisible(boolean clearButtonVisible);
public void select(T... items);
public void deselect(T... items);
public void deselectAll();
}Simple dropdown selection without filtering.
public class Select<T> extends AbstractField<Select<T>, T> implements HasDataProvider<T> {
public Select();
public Select(T... items);
public Select(String label, T... items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setTextRenderer(Renderer<T> renderer);
public void setEmptySelectionAllowed(boolean emptySelectionAllowed);
public void setEmptySelectionCaption(String caption);
public void setPlaceholder(String placeholder);
}Scrollable list selection component.
public class ListBox<T> extends AbstractField<ListBox<T>, T> implements HasDataProvider<T> {
public ListBox();
public ListBox(T... items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setRenderer(ComponentRenderer<? extends Component, T> renderer);
public void setDataProvider(DataProvider<T, ?> dataProvider);
}Multi-select scrollable list component.
public class MultiSelectListBox<T> extends AbstractField<MultiSelectListBox<T>, Set<T>> implements HasDataProvider<T> {
public MultiSelectListBox();
public MultiSelectListBox(T... items);
public void setItems(Collection<T> items);
public void setItems(T... items);
public void setItemLabelGenerator(ItemLabelGenerator<T> itemLabelGenerator);
public void setRenderer(ComponentRenderer<? extends Component, T> renderer);
public void select(T... items);
public void deselect(T... items);
public void deselectAll();
}Date selection component with calendar popup and internationalization.
public class DatePicker extends AbstractField<DatePicker, LocalDate> {
public DatePicker();
public DatePicker(String label);
public DatePicker(LocalDate initialDate);
public DatePicker(String label, LocalDate initialDate);
public void setMin(LocalDate min);
public LocalDate getMin();
public void setMax(LocalDate max);
public LocalDate getMax();
public void setLocale(Locale locale);
public Locale getLocale();
public void setPlaceholder(String placeholder);
public void setClearButtonVisible(boolean clearButtonVisible);
public void setAutoOpen(boolean autoOpen);
public void setWeekNumbersVisible(boolean weekNumbersVisible);
public void open();
public void close();
}Time selection component with step configuration.
public class TimePicker extends AbstractField<TimePicker, LocalTime> {
public TimePicker();
public TimePicker(String label);
public TimePicker(LocalTime initialTime);
public TimePicker(String label, LocalTime initialTime);
public void setMin(LocalTime min);
public LocalTime getMin();
public void setMax(LocalTime max);
public LocalTime getMax();
public void setStep(Duration step);
public Duration getStep();
public void setLocale(Locale locale);
public void setAutoOpen(boolean autoOpen);
public void setClearButtonVisible(boolean clearButtonVisible);
}Combined date and time selection component.
public class DateTimePicker extends AbstractField<DateTimePicker, LocalDateTime> {
public DateTimePicker();
public DateTimePicker(String label);
public DateTimePicker(LocalDateTime initialDateTime);
public DateTimePicker(String label, LocalDateTime initialDateTime);
public void setMin(LocalDateTime min);
public LocalDateTime getMin();
public void setMax(LocalDateTime max);
public LocalDateTime getMax();
public void setDatePlaceholder(String placeholder);
public void setTimePlaceholder(String placeholder);
public void setStep(Duration step);
public void setAutoOpen(boolean autoOpen);
public DatePicker getDatePicker();
public TimePicker getTimePicker();
}File upload component with drag-and-drop support and progress indication.
public class Upload extends Component implements HasSize {
public Upload();
public Upload(Receiver receiver);
public void setReceiver(Receiver receiver);
public Receiver getReceiver();
public void setMaxFiles(int maxFiles);
public int getMaxFiles();
public void setMaxFileSize(int maxFileSize);
public int getMaxFileSize();
public void setAcceptedFileTypes(String... acceptedFileTypes);
public String[] getAcceptedFileTypes();
public void setDropLabel(Component dropLabel);
public void setUploadButton(Component uploadButton);
public void setAutoUpload(boolean autoUpload);
public boolean isAutoUpload();
public Registration addStartedListener(ComponentEventListener<StartedEvent> listener);
public Registration addSucceededListener(ComponentEventListener<SucceededEvent> listener);
public Registration addFailedListener(ComponentEventListener<FailedEvent> listener);
public Registration addProgressListener(ComponentEventListener<ProgressEvent> listener);
public void interruptUpload();
}Progress indication component with determinate and indeterminate modes.
public class ProgressBar extends Component implements HasSize {
public ProgressBar();
public ProgressBar(double min, double max);
public ProgressBar(double min, double max, double value);
public void setValue(double value);
public double getValue();
public void setMin(double min);
public double getMin();
public void setMax(double max);
public double getMax();
public void setIndeterminate(boolean indeterminate);
public boolean isIndeterminate();
}User avatar display component with fallback initials.
public class Avatar extends Component implements HasSize, HasTheme {
public Avatar();
public Avatar(String name);
public Avatar(String name, String url);
public void setName(String name);
public String getName();
public void setImage(String url);
public String getImage();
public void setAbbreviation(String abbreviation);
public String getAbbreviation();
public void setColorIndex(Integer colorIndex);
public Integer getColorIndex();
public void addThemeVariants(AvatarVariant... variants);
}Group display of multiple avatars with overflow handling.
public class AvatarGroup extends Component implements HasSize {
public AvatarGroup();
public AvatarGroup(Avatar... avatars);
public void add(Avatar... avatars);
public void remove(Avatar... avatars);
public void setMaxItemsVisible(Integer maxItemsVisible);
public Integer getMaxItemsVisible();
public List<Avatar> getChildren();
}Icon display component with support for Vaadin Icons and custom SVG.
public class Icon extends Component implements HasSize, HasStyle {
public Icon();
public Icon(VaadinIcon icon);
public Icon(String collection, String icon);
public void setIcon(VaadinIcon icon);
public void setIcon(String collection, String icon);
public String getIcon();
public void setSize(String size);
public void setColor(String color);
}// Value change handling
public interface ValueChangeListener<E extends ValueChangeEvent<?>> {
void valueChanged(E event);
}
public interface HasValue<E extends HasValue.ValueChangeEvent<V>, V> {
V getValue();
void setValue(V value);
Registration addValueChangeListener(HasValue.ValueChangeListener<? super E> listener);
void setReadOnly(boolean readOnly);
boolean isReadOnly();
void setRequiredIndicatorVisible(boolean requiredIndicatorVisible);
}
// Item label generation
public interface ItemLabelGenerator<T> {
String apply(T item);
}
// File upload interfaces
public interface Receiver {
OutputStream receiveUpload(String filename, String mimeType);
}
// Theme variants
public enum ButtonVariant implements ThemeVariant {
LUMO_PRIMARY, LUMO_SUCCESS, LUMO_ERROR, LUMO_CONTRAST,
LUMO_TERTIARY, LUMO_TERTIARY_INLINE, LUMO_ICON,
LUMO_SMALL, LUMO_LARGE
}
public enum AvatarVariant implements ThemeVariant {
LUMO_XSMALL, LUMO_SMALL, LUMO_LARGE, LUMO_XLARGE
}
// Vaadin Icons
public enum VaadinIcon {
ABACUS, ABSOLUTE_POSITION, ACADEMY_CAP, ACCESSIBILITY,
ACCORDION_MENU, ADD_DOCK, ADJUST, ADOBE_FLASH,
AIRPLANE, ALARM, ALIGN_CENTER, ALIGN_JUSTIFY,
// ... (300+ icons available)
}Usage examples show how to create forms, handle events, and configure components for common web application scenarios.
Install with Tessl CLI
npx tessl i tessl/maven-com-vaadin--vaadin