Запустить функцию при вызове DISPOSE_ON_CLOSE

1

Итак, у меня есть 2 JFrames - J1 и J2. J2 запускается нажатием кнопки на J1. Также, когда эта кнопка нажата, все остальные элементы управления (JTextFields и JButtons и т.д.) На J1 предназначены для отключения. Для отключения всех элементов управления у нас есть функция DisableControls(). Эта функция вызывается, когда кнопка нажата на J1, чтобы запустить J2.

Поэтому, когда J2 закрывается с помощью DISPOSE_ON_CLOSE, мы хотим вызвать другую функцию EnableControls(), чтобы все элементы управления вернулись в разрешенное состояние.

Мой вопрос: есть ли способ вызвать функцию -EnableControls(), когда пользователь нажимает кнопку закрытия на J2?

благодаря

Теги:
swing
jframe

2 ответа

3

Итак, у меня есть 2 JFrames - J1 и J2. J2 запускается нажатием кнопки на J1. Также, когда эта кнопка нажата, все остальные элементы управления (JTextFields и JButtons и т.д.) На J1 предназначены для отключения.

Не используйте два кадра. Вместо этого второй кадр должен быть модальным JDialog, поэтому вам не нужно беспокоиться об отключении элементов управления на родительском фрейме.

См.: Использование нескольких JFrames: хорошая или плохая практика?

0

Вы можете использовать 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, если вы еще этого не сделали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню