我正在尝试制作游戏。游戏中有几个不同的屏幕,例如主菜单和实际的游戏屏幕。这些都是单独的jpanel扩展。我已经将它们添加到我的JFrame中,这是一个名为Game的类。在我的游戏类,我有以下方法在JPanels之间切换
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中是不允许的吗?
编辑:现在我打电话切换后重绘(),但它仍然没有工作
没有触及这些在一段时间,但我认为你需要绘画/重画框架,如果你想看到它。 –
也看cardLayout –