这是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计时器来确定何时显示工具提示以及何时隐藏工具提示。
- 重复执行任务。例如,您可以执行动画或更新显示目标进度的组件。
这是上述信息的来源http://www.javapractices.com/topic/TopicAction.do?Id=160
和http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
如果我想每隔Y秒简单地运行X,应该使用哪一个?
取决于您与之互动的内容。如果要与GUI交互,请使用
javax.swing.Timer,否则请使用
java.util.Timer。
这是否意味着如果我要构建GUI,则必须使用摆动版本的计时器?
是
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)