Вероятная неисправность в операции закрытия JFrame по умолчанию - PullRequest
0 голосов
/ 06 октября 2018

У меня возникло несколько проблем с DefaultCloseOperation JFrame.Я использую Netbeans.Я установил операцию закрытия для пользовательского кода в окне свойств JFrame.Всякий раз, когда я запускаю этот JFrame, пользовательский код выполняется автоматически. Даже если я не закрываю фрейм. В основном пользовательский код - это функция:

public static int logout(){

   int userconfirm=  JOptionPane.showConfirmDialog(null,"Are you sure you want 
             to Exit?","Please Confirm",YES_NO_OPTION);
   if(userconfirm==0){
       return 1;
   }
   else 
      return 0;
   }

Я не знаю, какое значение int должно быть возвращено для закрытия фреймаЯ просто экспериментирую, поэтому я возвращаю ноль или единицу.

1 Ответ

0 голосов
/ 06 октября 2018
if(userconfirm==0){

Прежде всего, не используйте магические числа.Люди не знают, что означает «0».API предоставляет такие переменные, как JOptionPane.YES_OPTION, которые вы можете использовать.Используйте переменную, предоставляемую API, чтобы сделать код более читабельным.

При каждом запуске этого JFrame пользовательский код выполняется автоматически. Даже если я не закрываю фрейм

Вы должны использовать WindowListener для контроля закрытия окна.Базовая логика будет выглядеть примерно так:

JFrame frame = new JFrame(...);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

frame.addWindowListener( new WindowAdapter()
{
    public void windowClosing(WindowEvent e)
    {
        JFrame frame = (JFrame)e.getSource();

        int result = JOptionPane.showConfirmDialog(
            frame,
            "Are you sure you want to exit the application?",
            "Exit Application",
            JOptionPane.YES_NO_OPTION);

        if (result == JOptionPane.YES_OPTION)
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
});

frame.setVisible( true );

Примечание: метод не нужен, поскольку логика закрытия обрабатывается внутри слушателя.

См. Закрытие приложения для получения дополнительной информации и идей кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...