решил сделать возможность обработки закрытия окна через "крестик".
Написал обработку события нажатия на "крестик"
mainActivity.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing (WindowEvent e) {
super.windowClosing(e);
if(!lastOperation.equals("Save") && !lastOperation.equals("Save as...")){
int n = saveCurrentFile("Хотите сохранить изменения перед выходом?");
if(n == 0) {
while (i > 0) {
String file = choiceFile.getTitleAt(choiceFile.getSelectedIndex());
Pattern pattern = Pattern.compile("(New).*");
Matcher matcher = pattern.matcher(file);
if (matcher.find()) {
saveAs();
}
else {
save();
}
choiceFile.remove(choiceFile.getSelectedIndex());
i--;
}
lastOperation = "Exit";
mainActivity.dispose();
}
else if (n == 1) {
lastOperation = "Exit";
mainActivity.dispose();
}
else if (n == -1) {
lastOperation = "PreExit";
}
}
}
});
Какой вариант из всплывающего диалогового окна я бы не выбрал, все равно происходит закрытие формы.
Диалог, всплывающий при общении с пользователем имеет следующий вид
public int saveCurrentFile(String list){
Object[] object = {"Да", "Нет"};
int n = JOptionPane.showOptionDialog(mainActivity,
list,
"Сохранение файла",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
object,
object[0]);
return n;
}
В виде картинки это выглядит следующим образом
Пытаюсь сделать так, чтобы при закрытии диалогового окна через крестик главное окно не закрывалось. Подскажите что я сделал не так?
Вам необходимо изменить стандартное поведение при закрытии вызвав
jFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
А затем самостоятельно закрывать окно, если нужно:
JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
jFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int confirm = JOptionPane.showOptionDialog(jFrame,
"Close?", "Exit", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, null, null);
if (confirm == JOptionPane.YES_OPTION) {
System.exit(1);
jFrame.dispose();
}
}
});
jFrame.setSize(300, 200);
jFrame.setLocationRelativeTo(null);
jFrame.setVisible(true);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня по приложению разбросано множество форм с полями ввода денежных величинДля удобства пользователя, который вставляет данные из разных...
На страницe находится несколько olЭто плейлисты