关闭所有JFrame时,具有多个JFrame的Java应用程序不会终止

时间:2016-09-05 01:25:13

标签: java swing jframe exit

我正在为比赛创建一个独立的数据管理程序(所以我不会发布所有代码,只发布相关内容) - 但是,我现在正在Eclipse Neon中测试它,因为它& #39;没做完。另外,我使用WindowBuilder,如果这很重要(我不认为它应该。)

我有一个JFrame(称之为" welcome")在首次启动应用程序时打开。在" welcome",我有一个JButton打开一个不同的JFrame(称之为" emp")并关闭" welcome" (通过frame.dispose()。)如果我退出"欢迎" (使用默认的右上角X),然后程序终止。但是,如果我点击Jbutton打开" emp"然后关闭" emp"以同样的方式,程序不会终止。我的问题是如何在" emp"退出了。

第一个JFrame的代码(" welcome"):

public class Welcome extends JFrame implements ActionListener {

    private JFrame frame;

    // Launch the application.
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Welcome window = new Welcome();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    // Create the application.
    public Welcome() {
        initialize();
        frame.pack();
    }

    //Variable declaration.
    //A bunch of variables that aren't important
    //End variable declaration.

    // Initialize the contents of the frame.
    private void initialize() {
        //TODO comment this out better
        //Create the JFrame and set all of its stuff.
        frame = new JFrame();
        frame.setBackground(Color.BLACK);
        frame.getContentPane().setBackground(lightGrey);
        frame.setIconImage(logo.getImage());
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        SpringLayout springLayout = new SpringLayout();
        frame.getContentPane().setLayout(springLayout);     

        //Add a bunch of components that also aren't important
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getActionCommand().equals("employees")) {
            frame.dispose();
            Employees emp  = new Employees();
            emp.setVisible(true);
        }
    }
}

我的第二个JFrame的代码(" emp"):

public class Employees extends JFrame {

    private JFrame frame2;

    /**
     * Create the application.
     */
    public Employees() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame2 = new JFrame();
        frame2.setExtendedState(MAXIMIZED_BOTH);
        frame2.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

}

他们都设置为EXIT_ON_CLOSE,但只有当我退出" welcome&#34 ;, not" emp"时才会有效。如果有人有任何想法/解决方案,我全都耳朵!

0 个答案:

没有答案