Java GUI线程未关闭

问题描述

我有一个包含 GUI (Swing) 的应用程序插件,并作为线程启动。 GUI 启动一个线程,该线程对按钮事件进行一些处理,在处理完自身后立即执行。在处理过程中,对话窗口起到记录器的作用。一切正常,在处理完成后调用 window.dispose() 时,GUI 和对话窗口将关闭并且线程终止。 线程是作为线程启动的,而不是通过 SwingUtilities 启动的(我尝试了很多次,但我就是无法让它工作)。

基本上是应用的入口类:

public void calledByApplication(){
     RunnableClass.startGui(this);
}

public void doStuff(){         //GUI actually gets created here
     gui.setVisible(true);
}

public void calledWhenSaveButtonpressed(){
    //Process some stuff
    gui.dispose();             //works,thread terminates
}

RunnableClass(实现 Runnable):

ApplicationEntryClass aec;

public RunnableClass(ApplicationEntryClass aec){
    this.aec = aec;
}

public void run(){
    aec.doStuff();
}

public static void startGui(ApplicationEntryClass aec){
    Thread guiThread = new Thread(new RunnableClass(aec));
    guiThread.start();
}

Gui 类:

public void calledWhenSaveButtonpressed(){
    aec.calledWhenSaveButtonpressed();
}

public void calledWhenCancelButtonpressed(){
    this.dispose();           //doesn't work
}

我的问题: 当尝试通过按钮事件(或带有 JFrame.disPOSE_ON_CLOSE 的 x)处理 GUI 时,它会关闭,但线程不会终止。查看堆栈后,我注意到 EventdispatchThread 卡在 EventdispatchThread.pumpEventForFilter(...) 上。

我很清楚,问题可能是线程不会自动销毁。但由于我是线程的新手,我真的不知道从哪里开始故障排除。有什么建议吗?

编辑:对话窗口不是问题。另外,我不能使用 System.exit() 否则调用插件的应用程序将终止。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)