首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >手动调用javax.swing.Timer的actionPerformed

手动调用javax.swing.Timer的actionPerformed
EN

Stack Overflow用户
提问于 2018-06-27 02:09:54
回答 1查看 201关注 0票数 0

下面的计时器工作得很好。

代码语言:javascript
复制
private static final Timer TICK_HOUR = new Timer(3600000, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // ...
    }
});

我想要做的是手动调用actionPerformed()。我如何才能做到这一点?

这个问题对读者来说似乎不太清楚,我会试着解释更多。

计时器每小时做一些处理。我想在不干扰计时器进程的情况下,在任何时候做这件事。

EN

回答 1

Stack Overflow用户

发布于 2018-06-27 04:25:08

static-initializer-block内部,将ActionListener存储在变量中,而不是直接将其传递给Timer

代码语言:javascript
复制
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变量存储为类级别的静态变量,然后在代码中的其他位置调用它:

代码语言:javascript
复制
private static final ActionListener LISTENER = new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        // ...
    }
};

private static final Timer TICK_HOUR = new Timer(3600000, LISTENER);

然后在你的代码中的某个地方

代码语言:javascript
复制
LISTENER.actionPerformed(/* someEvent */);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51049121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档