仅当子窗口在java swing中关闭时才需要关闭父窗口

时间:2011-09-20 09:31:15

标签: java swing frame

我在frame1中有两个单选按钮。单击启用单选按钮,它将弹出另一个名为frame2的帧。我想,不要在frame2打开时关闭frame1。但是当点击X时它会被关闭。我使用了“frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);”。它仍然关闭。

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);
    }

3 个答案:

答案 0 :(得分:2)

有许多方法可以获取活动窗口实例列表并验证哪个框架/窗口可见。

  1. Window.getOwnedWindows()
  2. Window.getWindows()
  3. Window.getOwnerlessWindows()
  4. Frame.getFrames()

答案 1 :(得分:0)

如果您只需要使用frame2,可以尝试使用dialogs。 一个简短的谷歌搜索也发现了另一个solution

答案 2 :(得分:0)

看看这里: 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();
    }
});