我正在尝试制作一款游戏。游戏中有几个不同的屏幕,例如主菜单和实际游戏屏幕。每个屏幕都是一个单独的jpanel扩展。我已经将它们添加到我的JFrame类(Game)中。在我的游戏类中,我有以下方法:
public void addPanel( JPanel p ) {
panels.add( p ); // An array of all the different panels I need
this.getContentPane().add( p );
}
public void switchToPanel( JPanel p ) {
for ( JPanel somePanel : panels ) {
somePanel.setVisible( false );
}
p.setVisible( true );
repaint();
}
这里的意思是,我有许多不同的面板,当我需要显示特定的面板,例如菜单屏幕时,我调用switchToPanel(myPanel)。基本上就是隐藏每个面板,然后取消隐藏我需要看到的那个。唯一的问题是,当我切换到它们时,这些面板不会出现。唯一会出现的是我最后添加的面板。在Objective C中,我经常使用这种方法在视图之间切换,从来没有遇到过任何问题。在Java中,这种事情不允许吗?
编辑:现在在切换后调用repaint(),但仍然不起作用。