首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消匿名SwingWorker

取消匿名SwingWorker
EN

Stack Overflow用户
提问于 2013-05-18 20:40:43
回答 1查看 548关注 0票数 2

在试图取消匿名SwingWorker时,我遇到了一种奇怪的依赖。我现在的代码是:

代码语言:javascript
复制
private static void init() {
    if (connected) {
        return;
    }
    //final SwingWorker<Void, Void> initWorker;
    final Timer noConnectionTimer = new Timer(5000, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //initWorker.cancel(true);
            waitObject.setTimedOut(true);
            connected = false;
            waitObject.process();
        }
    });
    new SwingWorker<Void, Void>() {
        @Override
        public Void doInBackground() {
            noConnectionTimer.setRepeats(false);
            noConnectionTimer.start();
            cachedInstance = new Network(Config.HOST_NAME, Config.HOST_PORT);
            if (connected) {
                noConnectionTimer.stop();
                new Thread(cachedInstance).start();
                waitObject.setTimedOut(false);
                waitObject.process();
            }
            return null;
        }
    }.execute();        
}

第一个假设我想要被证实:

I可以通过杀死(取消) SwingWorker.来杀死.代码。

因此,假设我的假设是正确的,我想取消匿名SwingWorker,但是当我尝试给它命名initWorker时,它需要是最终的,这样计时器就可以引用它。但是,SwingWorker本身也需要引用计时器,因此定时器也必须是最终的。

因此,我想我成功地在两个彼此需要的最终变量之间创建了一个依赖关系,我如何解决这个问题?

致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-18 21:50:28

您不必在创建时添加ActionListener。您只需将null传递给Timer构造函数,然后使用addActionListener添加ActionListener

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16628738

复制
相关文章

相似问题

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