下面的计时器工作得很好。
private static final Timer TICK_HOUR = new Timer(3600000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// ...
}
});
我想要做的是手动调用actionPerformed()
。我如何才能做到这一点?
这个问题对读者来说似乎不太清楚,我会试着解释更多。
计时器每小时做一些处理。我想在不干扰计时器进程的情况下,在任何时候做这件事。
发布于 2018-06-27 04:25:08
在static-initializer
-block内部,将ActionListener
存储在变量中,而不是直接将其传递给Timer
private static final Timer TICK_HOUR;
static{
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// ...
}
};
TICK_HOUR = = new Timer(3600000, listener);
listener.actionPerformed(/* someEvent */);
}
您也可以将listener
变量存储为类级别的静态变量,然后在代码中的其他位置调用它:
private static final ActionListener LISTENER = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// ...
}
};
private static final Timer TICK_HOUR = new Timer(3600000, LISTENER);
然后在你的代码中的某个地方
LISTENER.actionPerformed(/* someEvent */);
https://stackoverflow.com/questions/51049121
复制相似问题