我原计划不依赖于java的窗口组件系统。但是,我被迫使用它,因为它有双重缓冲。所以这导致了我目前的问题。有两个JPanel组件MainMenuDisplay和GameDisplay。每当您单击开始按钮时,我希望它摆脱mainMenuDisplay并将其替换为新的gameDisplay。然而,每当我尝试这样做时,它会删除mainMenuDisplay,并且即使代码显然正在运行,也不会添加gameDisplay。所以它只是让JFrame没有任何组件来运行它们的paintComponent方法。没有错误被抛出。那么为什么不添加新的GameDisplay呢? 附:请不要因使用静态物体而对我大喊大叫。
Start.WINDOW.changeCurrentDisplay(new GameDisplay());
//Creates a new GameDisplay and passes it the JFrame
//This is inside MainMenuDisplay
//This is part of the JFrame class
Display mainMenuDisplay;
Display gameDisplay;
//Display class extends JPanel
public WindowManager() {
super("Mountours - And - Men");
setSize(settings.windowHeight, settings.windowWidth);
setLocationRelativeTo(null);
setResizable(settings.resizable);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.WHITE);
currentDisplay = new MainMenuDisplay();
addKeyListener(currentDisplay.input);
addMouseListener(currentDisplay.input);
add(currentDisplay);
setVisible(true);
}
public void changeCurrentDisplay(Display display) {
removeAll();//Removes the MainMenuDisplay
mainMenuDisplay = display;
add(display);//Attempts to add component to JFrame, but doesn't, no errors either
addKeyListener(display.input);
addMouseListener(display.input);
}
答案 0 :(得分:0)
相反,您可以使用可见性概念来实现问题的解决方案。 只需在另一个上方添加两个面板即可 设置Visibility为true为true而false为其他为... 根据用途改变可见性
在开始按钮onclick事件监听器..编写以下代码..它就像一个魅力
GameDisplay.setVisible(true);
MainMenuDisplay.setVisible(false);