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的私有成员变量。抱歉,请检查更新。而且
登录
不能成为登录
的私有
成员,否则您不能在控制器
的上下文中分配它…很高兴我们对它进行了排序