2013-03-16 3 views
2

Я использую windowClosing для подтверждения перед закрытием конкретного JFrame.Показать приглашение перед закрытием JFrame

Перед закрытием я получаю диалог подтверждения, но проблема в том, что он закрывается, даже если я нажму кнопку NO. Любая помощь, пожалуйста?

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

Что вы по умолчанию операция закрытия JFrame установлен в? Был ли он установлен: 'jFrame.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);'? –

+3

'JOptionPane.showOptionDialog (null,« Вы действительно хотите выйти? »,« Онлайн-экзаменационная система », JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, ObjButtons, ObjButtons [1]);': Не передавать ' null' для первого аргумента. Передайте родительский фрейм диалогового окна, в противном случае диалоговое окно с параметром может перейти за рамку. –

+0

Пожалуйста, отметьте ответ как «принятый». –

ответ

2

Вы можете установить по умолчанию близкий вариант вашего JFrame к материалу DISPOSE_ON_CLOSE, если он установлен в EXIT_ON_CLOSE. В этом случае он разрешит ваш запрос примерно так: -

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
11

Какова ваша операция закрытия JFrame по умолчанию? Вы должны убедиться, что он установлен на: jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

+0

@ user2125727 [например] (http://stackoverflow.com/a/9228595/714968) – mKorbel

2

Надень на раме intialization

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
10

Попробуйте

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

Предлагаю вам отредактировать этот образец кода, чтобы он был отформатирован правильно. Это невозможно. –

+0

Это должен быть принятый ответ. –

Смежные вопросы