我的应用程序的主框架启动了一个JFrame线程:

IBM1622GUI cardReadPunchGUI = new IBM1622GUI(); // instantiate
Thread cardReadPunchThread = new Thread(cardReadPunchGUI); // alloc thread
cardReadPunchThread.start(); // call thread's run() method


稍后,大型机需要“销毁” IBM1622GUI(作为“使外围设备脱机”的一部分),并且再后来,需要重新实例化它-大概使用与上述相同的过程。主机应如何做才能基本返回到首次实例化IBM1622GUI之前的状态?

编辑-我可能应该提到IBM1622GUI,即JFrame类,是使用NetBeans作为“ Swing GUI表单”开发的,因此,我可以对源代码进行哪些编辑有一定的限制。

最佳答案

Read this

您应该使用此样式来初始化JFrame。

IBM1622GUI cardReadPunchGUI = null;
SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        cardReadPunchGUI = new IBM1622GUI();
    }
});


When you want to close the JFrame, here is already the question with answers

(由Chap编辑:链接的SO线程非常长且曲折,但归结为简单地使用cardReadPunchGUI.dispose()。实际上,这确实令人满意地回答了我的问题,我想对此做出贡献,但是我也希望此注释包含在内。)

07-24 15:54