timePicker
timePicker позволяет пользователям вводить или выбирать время.
-
XML-элемент:
timePicker -
Java-класс:
TypedTimePicker
Основы
Время можно ввести с клавиатуры или выбрать из выпадающего списка. Список появляется при клике на поле или кнопку с часами.
Пример определения timePicker типа localTime с надписью:
<timePicker id="timePicker" datatype="localTime" label="Appointment time"/>
Типы данных
timePicker поддерживает основные типы данных для хранения времени:
-
localTime -
offsetTime -
time
Для изменения типа используйте атрибут datatype.
Шаг интервала
По умолчанию интервал между значениями в выпадающем списке - 1 час. Для настройки используйте атрибут step в XML или программно.
Пример установки атрибута step в XML дескрипторе экрана:
<timePicker step="30"
min="10:00"
max="12:00"/> (1)
| 1 | Число без суффикса означает минуты. |
Атрибут step поддерживает гибкую настройку интервалов с использованием суффиксов единиц времени.
<timePicker step="2h"/> (1)
<timePicker step="1600s"/> (2)
<timePicker step="20m"/> (3)
| 1 | Интервал 2 часа. |
| 2 | Интервал 1600 секунд (26м 40с). |
| 3 | Интервал 20 минут. |
Аналогично можно настроить в контроллере экрана:
@ViewComponent
private TypedTimePicker<Comparable> timePicker;
@Subscribe
public void onInit(InitEvent event) {
timePicker.setStep(Duration.ofMinutes(30));
}
Шаг должен равномерно делить час или день. Например, "15 минут", "30 минут" и "2 часа" - допустимые значения, а "42 минуты" - нет.
| Для шагов менее 15 минут выпадающий список не отображается, чтобы избежать непрактичного количества вариантов. |
Варианты оформления
Используйте атрибут themeNames для настройки выравнивания текста, расположения вспомогательного текста, размера компонента.
Выравнивание
Доступны три варианта: align-left (по умолчанию), align-right, align-center.
XML код
<timePicker themeNames="align-left"/>
<timePicker themeNames="align-center"/>
<timePicker themeNames="align-right"/>
Положение вспомогательного текста
Установка helper-above-field перемещает вспомогательный текст из положения под полем на позицию над ним.
XML код
<timePicker label="Appointment time:" helperText="Open 8:00 AM - 6:00 PM"/>
<timePicker themeNames="helper-above-field" label="Appointment time:" helperText="Open 8:00 AM - 6:00 PM"/>
Атрибуты
id - alignSelf - allowedCharPattern - ariaLabel - ariaLabelledBy - autoOpen - classNames - clearButtonVisible - colspan - css - dataContainer - datatype - enabled - errorMessage - focusShortcut - height - helperText - label - max - maxHeight - maxWidth - min - minHeight - minWidth - overlayClass - placeholder - property - readOnly - required - requiredMessage - step - tabIndex - themeNames - visible - width
Обработчики
AttachEvent - BlurEvent - ClientValidatedEvent - ComponentValueChangeEvent - DetachEvent - FocusEvent - InvalidChangeEvent - TypedValueChangeEvent - statusChangeHandler - validator
|
Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). |
ClientValidatedEvent
Событие ClientValidatedEvent генерируется веб-компонентом при клиентской валидации.
InvalidChangeEvent
com.vaadin.flow.component.timepicker.TimePicker.InvalidChangeEvent возникает при изменении значения атрибута invalid.
validator
Добавляет экземпляр валидатора. Валидатор должен выбрасывать ValidationException при недопустимом значении.
@Install(to = "timePicker", subject = "validator")
private void timePickerValidator(LocalTime value) {
if (value != null && LocalTime.of(13,0).isBefore(value) && LocalTime.of(14,0).isAfter(value)) {
throw new ValidationException("No appointments between 13:00 to 14:00.");
}
}
Смотрите также
Смотрите документацию Vaadin для получения дополнительной информации.