timePicker 时间选择
基本用法
时间可以直接通过键盘输入,或者在带有时间列表的弹窗选择。当点击控件或时钟按钮时,会显示弹窗。

下面的示例定义了带标签的 localTime
类型的 timePicker
:
<timePicker id="timePicker" datatype="localTime" label="Appointment time"/>
间隔
弹窗中显示时间的默认间隔为 1 小时。但是也可以自定义间隔。
@ViewComponent
private TypedTimePicker<Comparable> timePicker;
@Subscribe
public void onInit(InitEvent event) {
timePicker.setStep(Duration.ofMinutes(30));
}

设置的时间间隔必须能整除一小时或一天。例如,“15分钟”、“30分钟”、“2小时” 都是有效的间隔;而 “42分钟” 则不是。
弹窗不会显示小于 15 分钟的间隔,是为了避免无效的时间选取。 |
时间格式
应用程序中的默认时间日期格式是由 本地日期格式字符串 定义。如需使用不同格式,请在消息包添加自定义格式字符串。
如需为特定组件修改日期格式,可以单独设置所需的格式:
@ViewComponent
private TypedTimePicker<Comparable> timePicker;
@Subscribe
public void onInit(InitEvent event) {
timePicker.setLocale(Locale.UK);
}
时间范围
如需将用户的输入控制在某个特定的时间范围内,可以指定组件的最大最小值。
@ViewComponent
private TypedTimePicker<Comparable> timePicker;
@Subscribe
public void onInit(InitEvent event) {
timePicker.setMin(LocalTime.of(8,0));
timePicker.setMax(LocalTime.of(17,0));
}
还可以设置 validator 检查=是否符合某个特定的=时间范围。
XML 属性
id - allowedCharPattern - autoOpen - classNames - clearButtonVisible - colspan - dataContainer - datatype - enabled - errorMessage - height - helperText - invalid - label - maxHeight - maxWidth - minHeight - minWidth - placeholder - property - readOnly - required - requiredIndicatorVisible - requiredMessage - tabIndex - themeNames - visible - width
事件和处理器
AttachEvent - BlurEvent - ClientValidatedEvent - ComponentValueChangeEvent - DetachEvent - FocusEvent - InvalidChangeEvent - TypedValueChangeEvent - statusChangeHandler - validator
在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 Code → Generate 菜单(Alt+Insert / Cmd+N)生成。 |
InvalidChangeEvent
当组件的 invalid 属性发生变化时发送 com.vaadin.flow.component.datepicker.DatePicker.InvalidChangeEvent
。
validator
为组件添加 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.");
}
}