这是javax.swing.Timer和java.util.Timer之间的区别:
javax.swing.Timer
>适用于更简单的案例,使用低数量的计时器(比如少于十几个)
>在事件分派线程上运行ActionListener对象
>可以直接更新GUI,而不使用EventQueue.invokeLater
>如果任务完全在事件分派线程中运行(也就是说,如果它不产生工作线程),则只有当任务不需要很长时间(300毫秒以下)时,GUI将保持响应状态
java.util.Timer中
>比javax.swing.Timer更具可扩展性,并具有附加的调度功能
>在私有线程上运行TimerTask对象
>需要使用EventQueue.invokeLater来更新GUI
您可以通过两种方式使用Swing定时器:
>延迟执行一次任务.
例如,工具提示管理器使用Swing定时器来确定何时显示工具提示以及何时隐藏它.
>重复执行任务.
例如,您可以执行动画或更新显示向目标进展的组件.
Which one should I use if I want to simply run X every Y seconds?
取决于你正在进行的互动.如果您正在与GUI交互,那么使用javax.swing.Timer,否则使用java.util.Timer.
Does this mean if I’m building a GUI I have to use the swing version
for a timer?
是