我正在尝试找出如何使用CardLayout,但是我不断收到“ CardLayout的父代错误”之类的错误。我以前从未使用过CardLayout,而且似乎在网上找不到很多东西。我只需要能够在框架上的两个面板之间切换。谢谢你的帮助。这是我当前的代码:

    Frame f = new Frame();
    CardLayout cardL = new CardLayout();
    JPanel cards = new JPanel(cardL);
    f.add(cards);
    StartPanel sp = new StartPanel();
    OtherPanel op = new OtherPanel();
    cards.add(sp, "Start");
    cards.add(op, "Other");

    cardL.show(sp, "Start");

    f.setVisible(true);

最佳答案

更改

cardL.show(sp, "Start");




cardL.show(cards, "Start");


正如CardLayout API会告诉您的那样,show(...)方法的第一个参数应该是对使用CardLayout的容器的引用。

也:


避免混合使用AWT(框架)和Swing(JPanel)。而是仅使用Swing。
对CardLayout密钥使用String常量最安全。这样可以避免有害的拼写和大写错误。
对于类似的错误,请在进入此处之前先进入Java API。通常在这里可以找到解决方案,并且学会这样做是一个很好的习惯。

10-08 19:56