关闭GUI,但主程序应该继续运行并打开一个新的

时间:2013-04-23 14:35:01

标签: java swing

我尝试实现以下目标:显示登录窗口,然后从工厂确定要打开的GUIclass例如admin / dev / {{1} })。

我无法设法弹出第二个窗口;我尝试使用dispose关闭程序但不运行main到最后。

主要

tester

LoginGui:

public static void main(String[] args){
        LoginGui loginGuiWindow = null;
        DeveloperGui devGui = null;
        TesterGui tesGui = null;
        UserCntrl uc = new UserCntrl();
        try {
            loginGuiWindow = new LoginGui(uc);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.print("Checking instance of: ");
        if(loginGuiWindow.loggingResult > 0){
            System.out.print("Checking instance of: ");
            if (uc.user instanceof Developer) {
                System.out.println("is instanceOf developer");
                devGui = new DeveloperGui(uc);
            }
            if (uc.user instanceof Tester ) {
                System.out.println("is instanceOf tester");
                tesGui = new TesterGui(uc);
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

当您显示一个窗口时,它不是阻塞调用,请在显示之前尝试setModal(true)

答案 1 :(得分:1)

确保LoginGui的对话框是模态的。

如果不是,控件将在显示后返回原始方法。 loggingResult永远不会> 0,所以“检查实例”永远不会运行。然后,当用户最终登录时,该代码已经运行,没有任何反应。

使对话框模态基本上会在打开对话框的行上“暂停”。当对话框关闭时,控制将从那里恢复,这就是你想要的(在这种情况下)