在关闭JFrame之前显示提示

6

我正在使用windowClosing来在关闭特定的JFrame之前进行确认。

在关闭之前,我会得到一个确认对话框,但问题是即使我点击“否”按钮,它也会关闭。请问有什么帮助吗?

addWindowListener(new WindowAdapter() {

  @Override
  public void windowClosing(WindowEvent we)
  { 
    String ObjButtons[] = {"Yes","No"};
    int PromptResult = JOptionPane.showOptionDialog(null, 
        "Are you sure you want to exit?", "Online Examination System", 
        JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, 
        ObjButtons,ObjButtons[1]);
    if(PromptResult==0)
    {
      System.exit(0);          
    }
  }
});

你的JFrame默认关闭操作设置是什么?它是否被设置为:jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - Hovercraft Full Of Eels
3
不要将null作为第一个参数传递。传递对话框的父窗体,否则您的选项对话框可能会在窗体后面。原始代码是:JOptionPane.showOptionDialog(null,"Are you sure you want to exit?","Online Examination System",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null,ObjButtons,ObjButtons[1]); - Guillaume Polet
请将一个答案标记为“已接受”。 - user4288844
4个回答

15

您的JFrame的默认关闭操作设置是什么? 您需要确保它已设置为:jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);


@user2125727 例如 - mKorbel

13

试一下

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent we)
    { 
        String ObjButtons[] = {"Yes","No"};
        int PromptResult = JOptionPane.showOptionDialog(null,"Are you sure you want to exit?","Online Examination System",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null,ObjButtons,ObjButtons[1]);
        if(PromptResult==JOptionPane.YES_OPTION)
        {
            System.exit(0);
        }
    }
});

我建议你编辑那段代码示例,使其格式正确。它现在无法阅读。 - Duncan Jones
1
这应该是被接受的答案。 - Wesos de Queso

2
如果您将JFrame的默认关闭选项设置为DISPOSE_ON_CLOSE,而不是EXIT_ON_CLOSE,那么它将解决您的问题,类似于以下内容:
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

2
在帧初始化时使用此代码。
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接