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

4 回答 4

15

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

于 2013-03-16T12:06:45.367 回答
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);
        }
    }
});
于 2013-03-16T12:11:30.883 回答
2

您可以将 JFrame 的默认关闭选项DISPOSE_ON_CLOSE设置为EXIT_ON_CLOSE. 在这种情况下,它将解决您的查询,例如:-

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
于 2013-03-16T12:06:38.657 回答
2

把它放在帧初始化上

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
于 2013-03-16T12:07:03.737 回答