【发布时间】:2016-10-18 09:26:51
【问题描述】:
现在我正在尝试编写一个小俄罗斯方块克隆。 因此,我想要 ONE jFrame,它应该包含多个 jPanel(用于主菜单、游戏本身、选项等...)。
我搜索了一下,很多人说应该使用 CardLayout。 所以我去了我的 NetBeans GUI Builder,做了一个 jFrame 将它切换到 CradLayout 并添加了 2 个面板; 第一个面板只包含一个按钮,第二个面板包含我的“游戏”(我的俄罗斯方块矩阵的图形显示、下一个块的图形显示和一个退出按钮)。
图片便于理解:
“主菜单”只是一个显示“开始游戏”的按钮(因为我是新手,所以不能发布超过 2 个链接)。
The structure of the "Card Layout in the NetBeans GUI Builder"
为了实现面板之间的切换,我正在使用这个(经过一些研究后发现):
@Action
public void cardSwitcher() {
CardLayout cl = (CardLayout) (gamePanel.getLayout());
cl.next(gamePanel);
}
按下“开始游戏”按钮然后调用方法cardSwitcher()。
当我现在运行我的 jFrame 时,它启动得很好,我看到了我的开始游戏按钮和一切。但是一旦我按下按钮,我就会得到一个 ClassCastException。
“javax.swing.GroupLayout 无法转换为 java.awt.CardLayout”
所以现在我的问题是,我什至可以实现我的目标,即拥有 1 个带有多个 jPanel 的框架,在其中使用 CardLayout 进行切换,还是有更简单/更好的方法来做到这一点?
提前感谢您的帮助。
PS:对于拼写错误或语法错误,我很抱歉,我不是母语人士。 此外,如果问题已经得到解答,并且我愚蠢地找到有关它的帖子,我将立即删除该帖子。我总是乐于接受建设性的批评。
【问题讨论】:
-
我修好了,我的错误是我试图让 ma JFrame 成为 CardLayout,据我了解,您不能将 jFrame 转换为 CardLayout。使用 jPanel 你可以做到。所以我刚刚创建了一个新的 jPanel,将其更改为 Card 布局,并将我的结构设置在 jPanel 而不是 jFrame 中。但无论如何感谢大家,你们真的帮我找到了解决方案。
标签: java swing user-interface layout-manager cardlayout