Итак, у меня есть 2 JFrames - J1 и J2. J2 запускается нажатием кнопки на J1. Также, когда эта кнопка нажата, все остальные элементы управления (JTextFields и JButtons и т.д.) На J1 предназначены для отключения. Для отключения всех элементов управления у нас есть функция DisableControls(). Эта функция вызывается, когда кнопка нажата на J1, чтобы запустить J2.
Поэтому, когда J2 закрывается с помощью DISPOSE_ON_CLOSE, мы хотим вызвать другую функцию EnableControls(), чтобы все элементы управления вернулись в разрешенное состояние.
Мой вопрос: есть ли способ вызвать функцию -EnableControls(), когда пользователь нажимает кнопку закрытия на J2?
благодаря
Итак, у меня есть 2 JFrames - J1 и J2. J2 запускается нажатием кнопки на J1. Также, когда эта кнопка нажата, все остальные элементы управления (JTextFields и JButtons и т.д.) На J1 предназначены для отключения.
Не используйте два кадра. Вместо этого второй кадр должен быть модальным JDialog, поэтому вам не нужно беспокоиться об отключении элементов управления на родительском фрейме.
См.: Использование нескольких JFrames: хорошая или плохая практика?
Вы можете использовать WindowListener
(документацию) для обнаружения события закрытия и вызова вашей функции:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//in J2 constructor
addWindowListener(
//WindowAdapter implements WindowListener and lets us only override the methods we need
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
//Call your function here
J1.EnableControls();
}
});
Предполагая, что EnableControls
- это метод, определенный для J1, вам, возможно, придется поддерживать ссылку на J1 в вашем классе J2, если вы еще этого не сделали.