以正确的方式实现Event-Dispatch-Thread

时间:2013-12-26 11:18:04

标签: java multithreading swing

我的程序中需要一个Event-Dispatch-Thread。

我想离开这个:

public Controller {
    this.login= new Login(this);
}

到此:

public Controller {
    Runnable guiCreator = new Runnable() {
        public void run() {
            this.login= new Login(this);
        }
    };
    SwingUtilities.invokeLater(guiCreator);
}

我知道第二个版本的错误在哪里。但是Login(Controller controller)构造函数需要控制器引用... 我是怎么做到的?

1 个答案:

答案 0 :(得分:3)

尝试使用Controller.this来引用类

的外部/顶级实例
public Controller() {
    Runnable guiCreator = new Runnable() {
        public void run() {
            login= new Login(Controller.this);
        }
    };
    SwingUtilities.invokeLater(guiCreator);
}