Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以正确的方式实现事件分派线程_Java_Multithreading_Swing - Fatal编程技术网

Java 以正确的方式实现事件分派线程

Java 以正确的方式实现事件分派线程,java,multithreading,swing,Java,Multithreading,Swing,我的程序中需要一个事件调度线程 我想从这里开始: public Controller { this.login= new Login(this); } 为此: public Controller { Runnable guiCreator = new Runnable() { public void run() { this.login= new Login(this); } }; SwingUtiliti

我的程序中需要一个事件调度线程

我想从这里开始:

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

public Controller {
    Runnable guiCreator = new Runnable() {
        public void run() {
            this.login= new Login(this);
        }
    };
    SwingUtilities.invokeLater(guiCreator);
}
我知道第二个版本的错误在哪里。但是登录(控制器)构造函数需要控制器引用。。。
我是如何做到这一点的?

尝试使用
Controller。这
引用类的外部/顶级实例

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

为什么要/需要进行更改?此程序将文件发送到服务器。服务器在每个文件的一个单独线程中接收此文件。如果我把GUI注释掉,它就会工作。如果我不注释GUI,则文件不会发送。@assylias OP的;)不工作,因为“this.login=new login(Controller.this);”中的“login”带红色下划线。login是login.java的私有成员变量。抱歉,请检查更新。而且
登录
不能成为
登录
私有
成员,否则您不能在
控制器
的上下文中分配它…很高兴我们对它进行了排序