调出卡片布局中的面板时如何做某事

How to do something when a panel in card layout is brought up

我有一个包含许多面板表单的卡片布局应用程序。我使用标签在每个面板中显示表单状态。我想确保无论何时打开一个面板,所有标签都被清除,但由于在卡片布局中,面板不是每次都重新创建,而是只是打开,我似乎无法弄清楚如何。有什么特别的方法可以做到吗?

您可以在面板中添加 HierarchyListener。只要面板在 CardLayout 中可见,就会调用侦听器:

@Override
public void hierarchyChanged(HierarchyEvent e)
{
    JComponent component = (JComponent)e.getSource();

    if ((HierarchyEvent.SHOWING_CHANGED & e.getChangeFlags()) != 0
    &&  component.isShowing())
    {
        // add your code here
    }
}