AlignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] CardlayoutTest.EventHandler.ancestorRemoved()javax.swing.JPanel--- 隐藏javax.swing.JPanel---隐藏

AlignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] CardlayoutTest.EventHandler.ancestorRemoved()javax.swing.JPanel--- 隐藏javax.swing.JPanel---隐藏,java,swing,Java,Swing,CardlayoutTest.EventHandler.ancestorAdded() 有三个侦听器对这些事件作出反应:AncestorListener、ComponentListener和HierarchyListener 默认情况下,ComponentListener是最佳选择 事件 CardlayoutTest.main()---------------------------第一个组件更改: javax.swing.JPanel[,0,0,0x0,无效,layout=java.aw

CardlayoutTest.EventHandler.ancestorAdded()

  • 有三个侦听器对这些事件作出反应:AncestorListener、ComponentListener和HierarchyListener

  • 默认情况下,ComponentListener是最佳选择

事件

CardlayoutTest.main()---------------------------第一个组件更改: javax.swing.JPanel[,0,0,0x0,无效,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件可显示性\u已更改: javax.swing.JPanel[,0,0,0x0,无效,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: javax.swing.JPanel[,0,0,0x0,无效,隐藏,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件可显示性\u已更改: javax.swing.JPanel[,0,0,0x0,无效,隐藏,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: javax.swing.JPanel[,0,0,0x0,无效,隐藏,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件可显示性\u已更改: javax.swing.JPanel[,0,0,0x0,无效,隐藏,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: Listeners.CardlayoutTest[frame0,0,0500X500,layout=java.awt.BorderLayout,title=,resize,normal,defaultCloseOperation=EXIT\u ON\u CLOSE,rootPane=javax.swing.JRootPane[,8,31484x461,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minumSize=,preferredSize=,rootpanechkingEnabled=true] 显示已更改的组件: Listeners.CardlayoutTest[frame0,0,0500X500,layout=java.awt.BorderLayout,title=,resize,normal,defaultCloseOperation=EXIT\u ON\u CLOSE,rootPane=javax.swing.JRootPane[,8,31484x461,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minumSize=,preferredSize=,rootpanechkingEnabled=true] 组件更改: Listeners.CardlayoutTest[frame0,0,0500X500,layout=java.awt.BorderLayout,title=,resize,normal,defaultCloseOperation=EXIT\u ON\u CLOSE,rootPane=javax.swing.JRootPane[,8,31484x461,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minumSize=,preferredSize=,rootpanechkingEnabled=true] 显示已更改的组件: Listeners.CardlayoutTest[frame0,0,0500X500,layout=java.awt.BorderLayout,title=,resize,normal,defaultCloseOperation=EXIT\u ON\u CLOSE,rootPane=javax.swing.JRootPane[,8,31484x461,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minumSize=,preferredSize=,rootpanechkingEnabled=true] 组件更改: Listeners.CardlayoutTest[frame0,0,0500X500,layout=java.awt.BorderLayout,title=,resize,normal,defaultCloseOperation=EXIT\u ON\u CLOSE,rootPane=javax.swing.JRootPane[,8,31484x461,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minumSize=,preferredSize=,rootpanechkingEnabled=true] 显示已更改的组件: Listeners.CardlayoutTest[frame0,0,0500X500,layout=java.awt.BorderLayout,title=,resize,normal,defaultCloseOperation=EXIT\u ON\u CLOSE,rootPane=javax.swing.JRootPane[,8,31484x461,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minumSize=,preferredSize=,rootpanechkingEnabled=true]

CardlayoutTest.EventHandler.ancestorMoved()javax.swing.JPanel--- 调整大小的javax.swing.JPanel---调整大小的javax.swing.JPanel--- 调整了CardlayoutTest.EventHandler.ancestorMoved()的大小 CardlayoutTest.EventHandler.ancestorAdded() CardlayoutTest.main()---------------------------第二个组件 更改: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,隐藏,布局=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: javax.swing.JPanel[,0,0484x461,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 组件更改: javax.swing.JPanel[,0,0484x461,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] 显示已更改的组件: javax.swing.JPanel[,0,0484x461,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

CardlayoutTest.EventHandler.ancestorRemoved()javax.swing.JPanel--- 隐藏的CardlayoutTest.EventHandler.ancestorAdded()javax.swing.JPanel ---显示javax.swi
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;

public class CardlayoutTest extends JFrame {

    private static final long serialVersionUID = 1L;
    public CardLayout card = new CardLayout();

    public CardlayoutTest() {
        JPanel pnlA = new JPanel(new BorderLayout());
        pnlA.add(new JButton("A"), BorderLayout.CENTER);
        JPanel pnlB = new JPanel(new BorderLayout());
        pnlB.add(new JButton("B"), BorderLayout.CENTER);
        JPanel pnlC = new JPanel(new BorderLayout());
        pnlC.add(new JButton("C"), BorderLayout.CENTER);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(card);
        add(pnlA, "A");
        add(pnlB, "B");
        add(pnlC, "C");

        pnlA.addAncestorListener(new EventHandler());
        pnlB.addAncestorListener(new EventHandler());
        pnlC.addAncestorListener(new EventHandler());

        pnlA.addHierarchyListener(new EventHandler());
        pnlB.addHierarchyListener(new EventHandler());
        pnlB.addHierarchyListener(new EventHandler());

        pnlA.addComponentListener(new EventHandler());
        pnlB.addComponentListener(new EventHandler());
        pnlB.addComponentListener(new EventHandler());
    }

    class EventHandler implements AncestorListener, ComponentListener, HierarchyListener {

        @Override
        public void ancestorAdded(AncestorEvent event) {
            System.out.println("CardlayoutTest.EventHandler.ancestorAdded()");
        }

        @Override
        public void ancestorMoved(AncestorEvent event) {
            System.out.println("CardlayoutTest.EventHandler.ancestorMoved()");
        }

        @Override
        public void ancestorRemoved(AncestorEvent event) {
            System.out.println("CardlayoutTest.EventHandler.ancestorRemoved()");
        }

        @Override
        public void hierarchyChanged(HierarchyEvent e) {
            System.out.println("Components Change: " + e.getChanged());
            if ((e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0) {
                if (e.getComponent().isDisplayable()) {
                    System.out.println("Components DISPLAYABILITY_CHANGED : " + e.getChanged());
                } else {
                    System.out.println("Components DISPLAYABILITY_CHANGED : " + e.getChanged());
                }
            }
            if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {
                if (e.getComponent().isDisplayable()) {
                    System.out.println("Components SHOWING_CHANGED : " + e.getChanged());
                } else {
                    System.out.println("Components SHOWING_CHANGED : " + e.getChanged());
                }
            }
        }

        public void componentHidden(ComponentEvent e) {
            System.out.println(e.getComponent().getClass().getName() + " --- Hidden");
        }

        public void componentMoved(ComponentEvent e) {
            System.out.println(e.getComponent().getClass().getName() + " --- Moved");
        }

        public void componentResized(ComponentEvent e) {
            System.out.println(e.getComponent().getClass().getName() + " --- Resized ");
        }

        public void componentShown(ComponentEvent e) {
            System.out.println(e.getComponent().getClass().getName() + " --- Shown");
        }
    }

    public static void main(String[] args) {
        CardlayoutTest t = new CardlayoutTest();
        t.setSize(500, 500);
        System.out.println("CardlayoutTest.main()------------------------ FIRST");
        t.card.show(t.getContentPane(), "A");
        t.setVisible(true);
        System.out.print("\n");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
        System.out.println("CardlayoutTest.main()------------------------ SECOND");
        t.card.show(t.getContentPane(), "B");
        System.out.print("\n");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
        System.out.println("CardlayoutTest.main()------------------------ THIRD");
        t.card.show(t.getContentPane(), "C");
        System.out.print("\n");
    }
}
public class PanelTrial extends javax.swing.JPanel implements AncestorListener {

     private Container frame;
     private javax.swing.JPanel btnPanel;

     public PanelTrial(Container frame) {
           this.frame = frame;
           initComponents();
           createBtnPanel();
           btnPanel.addAncestorListener(this);
     }

      // Called on btn click event - to show/hide btnPanel
      private void updateRightPanel(boolean showBtnPanel) {
           jPanel1.removeAll();

           GroupLayout layout = (GroupLayout) jPanel1.getLayout();

           if (showBtnPanel) {
               layout.setHorizontalGroup(layout.createSequentialGroup()
                .addComponent(btnPanel));
               layout.setVerticalGroup(layout.createParallelGroup(
                Alignment.TRAILING).addComponent(btnPanel));

                } else {
                layout.setHorizontalGroup(layout.createSequentialGroup()
                .addComponent(rightPanel));
                layout.setVerticalGroup(layout.createParallelGroup(
                Alignment.TRAILING).addComponent(rightPanel));

            }

            jPanel1.validate();
            this.validate();
       }


     @Override
     public void ancestorAdded(AncestorEvent e) {
           if (e.getSource() == btnPanel) 
                System.out.println("BTNSPANEL LOADED / ADDED");
     }

     @Override
     public void ancestorMoved(AncestorEvent e) {
                 // This is of no use for your purpose 
           System.out.println("Anc Moved - " + e.getSource());
      }

      @Override
      public void ancestorRemoved(AncestorEvent e) {
           if (e.getSource() == btnPanel) 
             System.out.println("BTNSPANEL UNLOADED / REMOVED");
      }