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 内)。
现在我正在尝试编写一个小的俄罗斯方块克隆程序。 因此我想要 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 内)。