jFrame 中的多个 jPanel 和切换 jPanel

Multiple jPanels in a jFrame and switching the jPanels out

现在我正在尝试编写一个小的俄罗斯方块克隆程序。 因此我想要 ONE jFrame,它应该包含多个 jPanel(用于主菜单、游戏本身、选项等等)。

我搜了一下,很多人说应该用CardLayout。 所以我去了我的 NetBeans GUI Builder,制作了一个 jFrame 将其切换为 CradLayout 并添加了 2 个面板; 第一个面板只包含一个按钮,第二个面板包含我的"game"(我的俄罗斯方块图形显示,下一个块的图形显示,以及一个退出按钮)。

图片更好理解:

"Main Menu" 只是一个显示 "Start game" 的按钮(不能 post 超过 2 个链接,因为我是新手)。

My current "Game Menu"

The structure of the "Card Layout in the NetBeans GUI Builder"

为了实现面板之间的切换,我使用了这个(经过一些研究发现):

@Action
public void cardSwitcher() {
    CardLayout cl = (CardLayout) (gamePanel.getLayout());
    cl.next(gamePanel);
}

按下 "Start Game" 按钮然后调用方法 cardSwitcher()。

当我现在 运行 我的 jFrame 启动时一切正常,我看到我的“开始游戏”按钮和所有内容。但是只要按下按钮,我就会收到 ClassCastException。

"javax.swing.GroupLayout cannot be cast to java.awt.CardLayout"

所以现在我的问题是,我是否可以实现我的目标,即在 1 个框架中包含多个 jPanel,并使用 CardLayout 切换它们,或者是否有 easier/better 方法来做到这一点?

在此先感谢您的帮助。

PS:对于拼写错误或语法错误,我深表歉意,我不是母语人士。 此外,如果问题已经得到解答并且我愚蠢地找到关于它的 Post,我将立即删除这个 post。我总是对建设性的批评持开放态度。

是的,您可以在 cardLayout 中切换面板。您应该直接从您定义它的组件(可能是 JFrame#getLayout())而不是从 cardLayout 内的面板获取 cardLayout(根据您所写的内容,我假设 gamePanel 在 cardLayout 内)。