【发布时间】:2012-09-08 21:49:31
【问题描述】:
我有一个 Swing 计时器 (javax.swing.Timer),用于在自定义 Swing 组件中执行一些动画。
但是,这会导致问题 - 特别是即使在所有窗口都关闭之后,它似乎也会因为实时计时器线程而停止应用程序终止。当看不到动画时,避免在隐藏对象上运行计时器的开销也会很好。
理想情况下,我想做以下事情:
- 当组件隐藏时停止计时器
- 只要组件可见,就重新开始计时
这可能吗(当然是以线程安全的方式!)
【问题讨论】:
-
hmm .. 祖先监听器有什么问题(这是我的第一个想法)?
-
或者你可以添加一个ComponentListener 并在它的componentHidden(...)和componentShown(...)方法中添加timer.start()/stop()
-
@GagandeepBalin 一个 componentListener 只是一种 propertyChangeListener 到单个组件的可见属性,如果 f.i. 不会改变。祖先被隐藏/显示。
标签: java swing animation timer