所以我有2个JFrame - J1和J2。单击J1上的按钮启动J2。此外,当按下该按钮时,J1上的所有其他控件(JTextFields和JButtons等)都将被禁用。为了禁用所有控件,我们有一个名为DisableControls()的函数。当在J1上按下按钮以启动J2时,将调用此函数。
因此,当使用DISPOSE_ON_CLOSE关闭J2时,我们要调用另一个函数EnableControls(),以便所有控件都恢复为启用状态。
我的问题是 - 当用户按下J2上的关闭按钮时,有没有办法调用函数-EnableControls()?
由于
答案 0 :(得分:3)
所以我有2个JFrame - J1和J2。单击J1上的按钮启动J2。此外,当按下该按钮时,J1上的所有其他控件(JTextFields和JButtons等)都将被禁用。
不要使用两个框架。相反,第二帧应该是模态JDialog,因此您不必担心禁用父框架上的控件。
答案 1 :(得分:0)
您可以使用WindowListener
(documentation)来检测关闭事件并调用您的函数:
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的引用。