timePicker 时间选择

timePicker 支持用户输入或选择时间。

  • XML 元素:timePicker

  • Java 类:TypedTimePicker

基本用法

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

time picker basic

下面的示例定义了带标签的 localTime 类型的 timePicker

<timePicker id="timePicker" datatype="localTime" label="Appointment time"/>

数据类型

timePicker 是一个带类型的组件,支持通用的时间类型:

  • localTime

  • offsetTime

  • time

如需修改类型,使用 datatype 属性。

间隔

弹窗中显示时间的默认间隔为 1 小时。通过 step 属性可以自定义间隔。

time picker step
<timePicker step="30" min="10:00" max="12:00"/>

设置的时间间隔必须能整除一小时或一天。例如,“15分钟”、“30分钟”、“2小时” 都是有效的间隔;而 “42分钟” 则不是。

弹窗不会显示小于 15 分钟的间隔,是为了避免无效的时间选取。

样式版本

通过 themeNames 属性调整文本对齐方式、帮助文本显示位置以及组件的大小。

对齐

有三个选项:align-left(默认)、align-rightalign-center

time picker alignment
XML 代码
<timePicker themeNames="align-left"/>
<timePicker themeNames="align-center"/>
<timePicker themeNames="align-right"/>

帮助文本显示位置

设置 helper-above-field 可以将帮助文本从默认的组件下方显示位置移至组件上方。

time picker helper text position
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"/>

尺寸

有两个选项:默认大小和 small

time picker size
XML 代码
<timePicker/>
<timePicker themeNames="small"/>

时间范围

如需将用户的输入控制在某个特定的时间范围内,使用 maxmin 属性指定组件的最大最小值。

<timePicker min="08:00" max="18:00"/>

还可以设置 validator 检查=是否符合某个特定的=时间范围。

XML 属性

autoOpen

定义当用户开始使用控件时是否显示弹窗。

  • 如果设置为 true,当用户输入、点击时钟按钮或控件时会打开弹窗。

  • 如果设置为 false,仅当用户点击时钟按钮时才会打开弹窗。

max

设置可选择的最大时间。支持格式为 hh:mm

min

设置可选择的最小时间。支持格式为 hh:mm

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

ClientValidatedEvent

ClientValidatedEvent 当在客户端完成数据验证时发送。

InvalidChangeEvent

当组件的 invalid 属性发生变化时发送 com.vaadin.flow.component.timepicker.TimePicker.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.");
    }
}

XML 内部元素

prefix

在控件内部添加一个前缀组件,一般是图标。

time picker prefix
显示 XML
<hbox>
    <timePicker>
        <prefix>
            <icon icon="SUN_O"/>
        </prefix>
    </timePicker>
    <timePicker>
        <prefix>
            <icon icon="MOON"/>
        </prefix>
    </timePicker>
</hbox>

参考