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

发布于 2024-12-05 06:12:30 字数 461 浏览 1 评论 0原文

我在第 1 帧中有两个单选按钮。单击“启用”单选按钮时,它将弹出另一个名为“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);
    }

I have two radio buttons in frame1. On click on enable radio button, it will popup another frame called frame2. I want, not to close the frame1 while the frame2 is opened. But it get closed when click on the X. I used "frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);". Still it get closed.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

回忆凄美了谁 2024-12-12 06:12:30

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

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

There are number of methods to get the list of active window instances and verify which frame/window is visible or not.

  1. Window.getOwnedWindows()
  2. Window.getWindows()
  3. Window.getOwnerlessWindows()
  4. Frame.getFrames()
游魂 2024-12-12 06:12:30

看看这里:
Swing WindowListener 如何否决 JFrame 关闭

您需要什么要做的是,在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();
    }
});

Have a look here:
How can a Swing WindowListener veto JFrame closing

What you will need to do is, in frame1 and frame2 you will need to set setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE). Then in the below code:

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();
    }
});
西瑶 2024-12-12 06:12:30

如果您只需要使用frame2,您可以尝试使用 dialogs
简短的谷歌搜索还发现了另一个解决方案

In case you need to work with the frame2 only, you may try to use dialogs.
A brief googling discovered another solution as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文