java手动调用javax的actionPerformed。摆动计时器
下面的计时器工作正常
private static final Timer TICK_HOUR = new Timer(3600000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// ...
}
});
我想做的是手动调用actionPerformed()
。我怎样才能做到这一点
对于读者来说,这个问题似乎不清楚,我将尝试解释更多
计时器每小时进行一次处理。我想在不干扰计时器进程的情况下,随时做这件事
# 1 楼答案
简短的回答
一个更简单(设计更好)的解决方案是,而不是
你应该把
ActionListener
做的工作具体化然后从方程中去掉
Timer
,你可以在需要的时候调用doReallyImportantWorkEveryHour
来解决基本问题长话短说
那么,让我们从
通过这种方式创建
Timer
,会自动将ActionListener
注册到Timer
然后你陈述:
这表明你想尝试做一些像
这可能会导致
NullPointerException
,但更重要的是,这将对系统性能产生不利影响,因为ActionListener
不可能知道它不应该一直都是自己——基本上是无限循环但是,如果您想过早地触发
Timer
sActionListener
s(在任何已注册的侦听器之外)那么是的,你可以用
但是请确保您是在EDT的上下文中调用它们,因为这是
Timer
做出的保证之一“更简单”的解决方案可能只是使用
Timer
本身已经提供的功能