如何打开一个新窗口

时间:2012-05-08 14:00:12

标签: java swing user-interface jframe

我有一个这样的课程:

public class A {
    public static void main() {
        B f1 = new B();
        f1.setVisible(true);
    }

    class B extends JFrame {
        public B() {
            JButton btn = new JButton("click me");
            btn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    C f2 = new C();
                    f2.setVisible(true);
                }
            });
            add(btn);
        }
    }

    class C extends JFrame {
        public C() {
            //whatever here
        }
    }
}

当我第一次运行这个java代码时, 窗口X包含一个“单击我”按钮。单击它后,弹出另一个新窗口Y. 但问题是,当我关闭新窗口Y时,旧窗口X自动与Y一起关闭。 (即他们同时关闭)

我想做的是,在我关闭Y之后,X保持在那里而不是被关闭。怎么做?

3 个答案:

答案 0 :(得分:3)

最简单的方法,将this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)放在第二个窗口构造函数中。

其他方式:http://www.leepoint.net/notes-java/GUI/containers/10windows/12frameclose.html

答案 1 :(得分:2)

您将更改setDefaultCloseOperation()方法的参数,该方法定义单击关闭按钮时发生的情况。在这种情况下,您将使用DISPOSE_ON_CLOSE作为参数。两个帧被处置的原因可能是因为您将参数设置为EXIT_ON_CLOSE(如果您没有明确地设置它,那么它是为您完成的;它是所有帧的默认关闭行为),它终止了整个过程 - 这包括所有打开的窗口和框架。如果您需要进一步的帮助,请询问。 :)

答案 2 :(得分:0)

什么DefaultCloseOperation有Y帧?它可能是EXIT_ON_CLOSE,因此X与Y一起关闭。将其更改为DISPOSE_ON_CLOSE或保留默认值。它应该工作。