我有一个这样的课程:
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保持在那里而不是被关闭。怎么做?
答案 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或保留默认值。它应该工作。