现在我正在尝试编写一个小俄罗斯方块克隆。 因此我希望有 ONE jFrame,它应包含多个jPanel(主菜单,游戏本身,选项等等)。
我搜索了一下,很多人说应该使用CardLayout。 所以我转到我的NetBeans GUI Builder,将jFrame切换到CradLayout并添加了2个Panel; 第一个面板只包含一个按钮,第二个面板包含我的“游戏”(我的Tetrismatrix的图形显示,下一个Block的图形显示和一个退出按钮)。
图片以便更好地理解:
“主菜单”只是一个显示“开始游戏”的按钮(不能发布超过2个链接,因为我是新的)。
The structure of the "Card Layout in the NetBeans GUI Builder"
为了实现Panels之间的切换,我正在使用它(经过一些研究后发现):
@Action
public void cardSwitcher() {
CardLayout cl = (CardLayout) (gamePanel.getLayout());
cl.next(gamePanel);
}
按“开始游戏”按钮,然后调用方法cardSwitcher()。
当我现在运行我的jFrame它开始很好,我看到我的开始游戏按钮和一切。但是只要我按下按钮,我就会得到一个ClassCastException。
“javax.swing.GroupLayout无法强制转换为java.awt.CardLayout”
所以现在我的问题是,我是否可以实现我的目标,即在其中使用CardLayout切换这些具有多个jPanel的1个帧,或者是否有更简单/更好的方法来执行此操作?
提前感谢您的帮助。
PS:我很抱歉错误的拼写或错误的语法,我不是母语人士。 此外,如果问题已经得到解答,我就傻到找到关于它的帖子我将立即删除这篇文章。我总是愿意接受建设性的批评。答案 0 :(得分:0)
是的,您可以在cardLayout中切换面板。您应该直接从您定义它的组件(可能是JFrame#getLayout())中取出cardLayout,而不是从cardLayout中的面板中取出(从您编写的内容我认为gamePanel在cardLayout中)。