我一直在想为什么gameControlArt(这是一个JPanel对象)不会出现在也是JPanel对象的gamePanel上。添加JPanel不显示Java
我正在创建的东西:用户在运行该程序时看到mainMenuArt(具有包含艺术作品的JLabel的JPanel对象)添加到gamePanel。当用户按下某个键时,mainMenuArt将被删除。 gameControlArt出现。用户再次按下一个键,gameControlArt被移除,画布对象被添加到gamePanel对象。
取而代之的是:mainMenuArt出现在gamePanel上,这很好。问题出在移除mainMenuArt之后,gameControlArt(这是另一个JPanel对象,它具有包含插图的JLabel对象)不会被添加到gamePanel(它是一个JPanel对象)。相反,它会在JPanel对象没有添加组件时显示默认的灰色区域。当用户按下某个键时,画布将显示在gamePanel上。
所以总结一下问题是:gameControlArt根本不会显示在游戏面板上。
我尝试updateUI(),重新验证和repaint()但这些方法调用不起作用的一些奇怪的原因。
public class GameWindow extends JFrame implements KeyListener{
gamePanel = (JPanel) getContentPane();
gamePanel.remove(mainMenuArt);
gameControlArt = new GameControlArt();
gamePanel.add(gameControlArt);
GameWindow.getGamePanel().revalidate();
}
public class extends Canvas implements KeyListener
{
GameWindow.getGamePanel().add(this);
GameWindow.getGamePanel().revalidate();
}
我在扩展JFrame的名为GameWindow的类中定义了gamePanel对象。所以gamePanel的定义方式如下:gamePanel =(JPanel)getContentPane(); – Nicholas
我试过了,但问题依然存在。 – Nicholas
我似乎想出了一个解决方案。我需要调整相对于图像宽度和高度的JFrame对象的大小。感谢您的帮助,Peggy +1帮助! – Nicholas