Java 在关闭时调用DISPOSE\u时启动函数

Java 在关闭时调用DISPOSE\u时启动函数,java,swing,jframe,Java,Swing,Jframe,所以我有两个jframe-J1和J2。通过单击J1上的按钮启动J2。此外,按下该按钮时,J1上的所有其他控件(JTextFields和JButtons等)都将被禁用。为了禁用所有控件,我们有一个名为DisableControls()的函数。按下J1上的按钮以启动J2时调用此功能 因此,当使用DISPOSE_ON_CLOSE关闭J2时,我们希望调用另一个函数EnableControls(),以便所有控件都回到启用状态 我的问题是-当用户按下J2上的关闭按钮时,是否有方法调用函数-EnableCon

所以我有两个jframe-J1和J2。通过单击J1上的按钮启动J2。此外,按下该按钮时,J1上的所有其他控件(JTextFields和JButtons等)都将被禁用。为了禁用所有控件,我们有一个名为DisableControls()的函数。按下J1上的按钮以启动J2时调用此功能

因此,当使用DISPOSE_ON_CLOSE关闭J2时,我们希望调用另一个函数EnableControls(),以便所有控件都回到启用状态

我的问题是-当用户按下J2上的关闭按钮时,是否有方法调用函数-EnableControls()


谢谢

您可以使用
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定义的方法,如果尚未在J2类中维护对J1的引用,则可能需要在J2类中维护对J1的引用

所以我有两个jframe-J1和J2。通过单击J1上的按钮启动J2。此外,按下该按钮时,J1上的所有其他控件(JTextFields和JButtons等)都将被禁用

不要使用两个框架。相反,第二个帧应该是模态JDialog,这样您就不必担心禁用父帧上的控件

见: