2011-09-20 156 views
1

我在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); 
    } 
+3

请提供一个[sscce](http://sscce.org/),展示您描述的问题。 – trashgod

回答

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

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

2

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

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