下面的计时器工作得很好。
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
复制相似问题