2

我有这样的课:

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 保持在那里而不是关闭。怎么做?

4

3 回答 3

3

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

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

于 2012-05-08T14:07:08.900 回答
2

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

于 2012-05-08T14:09:29.507 回答
0

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

于 2012-05-08T14:08:16.470 回答