调用DISPOSE_ON_CLOSE时启动一个函数

时间:2014-11-28 21:51:58

标签: java swing jframe

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

因此,当使用DISPOSE_ON_CLOSE关闭J2时,我们要调用另一个函数EnableControls(),以便所有控件都恢复为启用状态。

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

由于

2 个答案:

答案 0 :(得分:3)

  

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

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

请参阅:The Use of Multiple JFrames: Good or Bad Practice?

答案 1 :(得分:0)

您可以使用WindowListenerdocumentation)来检测关闭事件并调用您的函数:

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的引用。