Skip to content

Latest commit

 

History

History
73 lines (47 loc) · 2.59 KB

File metadata and controls

73 lines (47 loc) · 2.59 KB
Timer

定时器是一个非可视化的界面组件,可以以一定的时间间隔运行一些界面控制器的代码。定时器是在一个处理用户事件的线程里面运行的,所以可以更新界面组件。当创建定时器的界面被关闭之后,定时器就会停止工作了。

创建定时器的主要方法就是在界面 XML 描述中的 facets 元素中进行声明。

定时器使用 timer 元素描述。

  • delay - 必选属性;按毫秒定义定时器执行的时间间隔。

  • autostart – 可选属性;当设置成 true 的时候,定时器会在界面打开的时候立即自动启动。默认值是 false,也就是说只有在调用定时器的 start() 方法之后才会启动。

  • repeating – 可选属性;开启定时器的重复执行模式。如果这个属性设置的是 true,定时器会按照 delay 设置的时间间隔反复一轮一轮的执行。否则只会在 delay 设定的毫秒时间之后执行一次。

可以在界面控制器中订阅 TimerActionEvent 事件,以便定时执行一些代码。

下面的示例演示了定义定时器并在控制器内订阅其事件:

link:../../../../../source/gui_facets/timer_1.xml[role=include]
link:../../../../../source/gui_facets/timer_2.java[role=include]

定时器可以作为字段注入一个界面控制器,也可以通过 getWindow().getFacet() 方法获得。定时器的执行可以用定时器的 start()stop() 方法控制。对于已经启动的定时器,会忽略再次调用 start(),但是当定时器使用 stop() 方法停止之后,可以通过 start() 方法再次启动。

下面示例展示了如何通过 XML 描述来定义定时器以及在控制器中使用定时器监听:

link:../../../../../source/gui_facets/timer_3.xml[role=include]
link:../../../../../source/gui_facets/timer_4.java[role=include]
  1. 定时器执行处理器

  2. 定时器停止事件

  3. 启动定时器

定时器也可以在控制器里面创建,如果是这样的话,需要显式的使用 addFacet() 方法把这个定时器加到界面中,比如:

link:../../../../../source/gui_facets/timer_5.java[role=include]
  1. 在页面中添加定时器

  2. 设置定时器参数

  3. 添加执行处理器

  4. 添加停止事件监听器

  5. 启动定时器