#swing
#swing
Вопрос:
У меня есть следующий фрагмент кода:
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int result = JOptionPane.showConfirmDialog(Bookstore.this, "Are you sure to quit?", "Confirm", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
// release connection resource
if (bookstoreConnection != null) {
bookstoreConnection.closeConnection();
}
// JFrame handles close request based on the property
// set by invoking the setDefaultCloseOperation(...)
Bookstore.this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
});
и всякий раз, когда я нажимаю кнопку [x] в правом верхнем углу, рамка исчезает независимо от того, какой вариант я выбрал. В этом случае я хочу знать, как сохранить окно фрейма, если я не выберу опцию. Спасибо!
Ответ №1:
Используйте это setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)
как операцию закрытия по умолчанию для вашего подкласса JFrame (я не помню, используется ли это по умолчанию, если вы явно не добавляете setDefaultCloseOperation(...)
с другим значением)
DO_NOTHING_ON_CLOSE (определено в WindowConstants): ничего не делать; требовать от программы обработки операции в методе windowClosing зарегистрированного объекта WindowListener.
http://download.oracle.com/javase/1.3/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation (int)
Комментарии:
1. привет, если вы не используете объект WindowListener, как вы можете закрыть все ресурсы, такие как подключение к базе данных, перед полным закрытием вашего приложения?
2. Но разве вы не используете прослушиватель окон?
3. да, я использовал прослушиватель окон для выполнения закрытия ресурса подключения к базе данных и выхода из окна, если выбран параметр «ДА», но проблема, с которой я сталкиваюсь сейчас, заключается в том, что если я не выбираю опцию, приложение все еще работает в фоновом режиме, но окно фрейма исчезает
4. @Final Illusion Предложение Anreas работает для меня, если это не для вас, в вашем коде есть какая-то проблема, тогда пришло время для sscce