Какая команда позволит закрыть отдельный фрейм вместо приложения?
Привет, мастера ) Я пока учусь, прошу совета.
Всем известно, что setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) завершает приложение, если закрыть фрейм.
Но у меня такой момент: майн-окно имеет в себе кнопку "Опции". При нажатии на нее - появляется окошко с настройками приложения. Там я конечно сделаю кнопку выхода, типа "Готово", но.. что в ней прописать? И в теле самого класса окна Опции есть строка setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) которая убивает все приложение полностью, если закрыть опции.. Я уже убрал строку эту из класса, но тогда при выходе из опции они продолжат висеть? Как решить данную проблему? Как закрывать отдельное окошко Опции, возвращаясь к основному приложению?
Хорошо, я вот подумал - можно при нажатии на Готово выполнять сет визибл фолс, но как тогда сделать недоступной кнопку крестик, чтоб ее никто не мог нажать и повесить Опции в памяти без завершения? Или я не верно понимаю принцип закрытия отдельных окон?..
И еще, дополнительный вопрос - как мне, при открытии ОПЦИИ, делать майн-окно неактивным, чтобы никто не мог нажать на нем Выход и на экране тогда остается ведь висеть только окошко Опции, хотя кнопка Выход Майн-окна должна по идее убивать все приложение полностью со всеми наследниками?
Пока нет ни одного ответа - допишу еще немного. Добавил в Майн-окно под кнопку Опции такое:
options.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
createOptionWindow();
}
public void createOptionWindow()
{
JFrame createOptionWindow = new OptMenu();
createOptionWindow.setIconImage(Toolkit.getDefaultToolkit().getImage("data/pic/Im3.png"));//устанавливаем иконку в название окна
createOptionWindow.setLocationRelativeTo(null);//помещаем окно в центр раб стола
setEnabled(false);
}
});
Теперь при появлении Опций - главное окно блокируется и нажать на Выход уже нельзя, что есть большой плюс. Но вернуть его назад не могу пока ((( После закрытия окна Опции - главное так и остается неактивным! Варианты с если-то и do-while мне ничего не дали - после блокировки майн-окна обратного эффекта не добиться ;(
Возможно мне нужно разблокировать обратно майн-окно при нажатии на кнопку Готово в Опциях? перед убийством окна Опций? Но что прописать там? Как это сделать?
Пока что в классе Опции на кнопке Готово у меня следующий код:
close = new JButton("Готово", Library.i8);
{
close.addActionListener(new ActionListener()//прописывает собитие ВЫХОД при нажатии на кнопку ВЫХОД
{
public void actionPerformed(final ActionEvent e)
{
setVisible(false);
Container frame = close.getParent(); do frame = frame.getParent(); while (!(frame instanceof JFrame)); ((JFrame) frame).dispose();
}
} );
}