添加JPanel没有显示Java

时间:2013-05-30 15:35:45

标签: java canvas jpanel

我一直在试图解释为什么gameControlArt(这是一个JPanel对象)没有出现在gamePanel上,它也是一个JPanel对象。

我想要创建的内容:用户在运行程序时看到mainMenuArt(包含JLabel的JPanel对象)添加到gamePanel。当用户按下某个键时,将删除mainMenuArt。 gameControlArt出现了。用户再次按下一个键,将删除gameControlArt,将canvas对象添加到gamePanel对象中。

反而发生了什么:主游戏艺术出现在游戏面板上,这很好。问题在于删除mainMenuArt后,gameControlArt(这是另一个包含艺术作品的JLabel对象的JPanel对象)不会被添加到gamePanel(这是一个JPanel对象)。相反,当JPanel对象没有添加任何组件时,它会显示默认的灰色区域。当用户按下某个键时,画布会显示在gamePanel上。

所以总结一下问题是什么:gameControlArt根本不会像在gamePanel上那样显示出来。

我尝试使用updateUI(),重新验证和重绘(),但这些方法调用因某些奇怪的原因不起作用。

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();
}

1 个答案:

答案 0 :(得分:1)

尝试getContentPane.add()而不是添加。

我不确定它是否适用于这种情况,因为我不知道你是如何定义gamePanel类的,但我希望它确实如此。