为什么这些卡片没有出现在JPanel CardLayout上?

W.K*_*K.S 3 java swing jpanel cardlayout

我的应用程序由两个JPanels 组成,它们将是一张卡片MainPanel.代码如下.出于某种原因,面板不会出现.我非常感谢你的帮助:)

MainPanel.java:

public class MainPanel extends JPanel{

    private final static String PANEL1 = "PANEL1";
    private final static String PANEL2 = "PANEL2";

    private static Panel1 panel1;
    private static Panel2 panel2;

    //private static CardLayout layout;

    public MainPanel() {

        super(new CardLayout());

        panel1 = new Panel1();
        panel2 = new Panel2();

        getLayout().addLayoutComponent(PANEL1, panel1);
        getLayout().addLayoutComponent(PANEL2, panel2);


        ((CardLayout) getLayout()).show(this, PANEL1); 
    }

}
Run Code Online (Sandbox Code Playgroud)

Main.java:

public class Main {

    private static JFrame window;

    public static void main(String[] args) {

        window = new JFrame();

        window.setContentPane(new MainPanel());
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(600,400);
        window.setVisible(true);
    }

}
Run Code Online (Sandbox Code Playgroud)

mre*_*mre 6

这个

getLayout().addLayoutComponent(PANEL1, panel1);
getLayout().addLayoutComponent(PANEL2, panel2);
Run Code Online (Sandbox Code Playgroud)

应该

add(panel1, PANEL1);
add(panel2, PANEL2);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅如何使用CardLayout.

  • @WKS,我指的是`JPanel #add`. (3认同)