Timer
属性
Timer
在界面 XML 描述的 facets
元素中定义,有下列属性:
-
delay
- 必需属性。定义定时器执行的时间间隔,以毫秒为单位。
-
autostart
- 可选属性。默认值是false
,也就是说只有在调用定时器的start()
方法之后才会启动。当设置成true
的时候,定时器会在界面打开的时候立即自动启动。
-
repeating
- 可选属性。开启定时器的重复执行模式。如果这个属性设置的是true
,定时器会按照delay
设置的时间间隔重复执行。否则只会在delay
设定的时间之后执行一次。
事件和处理器
如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Jmix UI 层级结构面板选中 facet 元素,然后用 Jmix UI 组件面板的 Handlers 标签页生成。 或者可以使用界面控制器顶部面板的 Generate Handler 按钮。 |
TimerActionEvent
TimerActionEvent
支持在 delay
属性指定的时间间隔执行一些代码。如果 repeating
属性设置为 true
,则该事件中的代码会多次执行,直至定时器结束。
@Subscribe("timer")
protected void onTimerFacetTick(Timer.TimerActionEvent event) {
seconds += event.getSource().getDelay() / 1000;
notifications.create(Notifications.NotificationType.TRAY)
.withCaption("Timer tick")
.withDescription(seconds + " seconds passed")
.show();
}
如需以编程的方式注册事件处理器,使用组件的 addTimerActionListener()
方法。
Usage Example
<window xmlns="http://jmix.io/schema/ui/window"
caption="msg://timerScreen.caption">
<facets>
<timer id="timer"
autostart="false"
delay="5000"
repeating="true"/> (1)
</facets>
<layout>
<hbox spacing="true"> (2)
<button id="startTimer"
caption="Start"
icon="PLAY"/>
<button id="stopTimer"
caption="Stop"
icon="STOP"/>
<label id="statusLabel"
align="MIDDLE_LEFT"
value="Timer is not running"/>
</hbox>
</layout>
</window>
1 | 在 facets 元素中定义 Timer 。 |
2 | 定义控制定时器的 UI 组件和布局。 |
@Autowired
protected Timer timer;
@Autowired
protected Label<String> statusLabel;
@Autowired
protected Notifications notifications;
protected int seconds = 0;
@Subscribe("startTimer")
protected void onStartTimerClick(Button.ClickEvent event) {
timer.start(); (1)
statusLabel.setValue("Timer started");
notifications.create(Notifications.NotificationType.TRAY)
.withCaption("Timer started")
.show();
}
@Subscribe("timer")
protected void onTimerTick(Timer.TimerActionEvent event) {
seconds += event.getSource().getDelay() / 1000; (2)
notifications.create(Notifications.NotificationType.TRAY)
.withCaption("Timer tick")
.withDescription(seconds + " seconds passed")
.show();
}
@Subscribe("stopTimer")
protected void onStopTimerClick(Button.ClickEvent event) {
timer.stop(); (3)
seconds = 0;
statusLabel.setValue("Timer stopped");
notifications.create(Notifications.NotificationType.TRAY)
.withCaption("Timer stopped")
.show();
}
1 | 当点击 startTimer 按钮时启动定时器。 |
2 | 计算定时器启动时长。 |
3 | 停止定时器。 |
本页是否有帮助?
感谢您的反馈