只有在java swing中关闭子窗口时才需要关闭父窗口
问题描述:
我在frame1中有两个单选按钮。点击启用单选按钮,它会弹出另一个叫做frame2的框架。我想要在frame2打开时不关闭frame1。但是当它点击X时会关闭。我使用了“frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);”。它仍然关闭。只有在java swing中关闭子窗口时才需要关闭父窗口
enable.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
// TODO Auto-generated method stub
frame2.setVisible(true);
frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
答
看一看这里: How can a Swing WindowListener veto JFrame closing
你需要做的是,在frame1和frame2中你需要设置setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE)。然后在下面的代码中:
frame1.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
//check is frame 2 is open.. if it is then return without doing anything, else
// frame1.dispose();
}
});
答
有许多方法可以获取活动窗口实例列表并验证哪些框架/窗口可见或不可见。
- Window.getOwnedWindows()
- Window.getWindows()
- Window.getOwnerlessWindows()
- Frame.getFrames()
请提供一个[sscce](http://sscce.org/),展示您描述的问题。 – trashgod