0

我一直试图弄清楚为什么 gameControlArt(它是一个 JPanel 对象)没有出现在也是一个 JPanel 对象的 gamePanel 上。

我正在尝试创建的内容:用户在运行程序时会看到 mainMenuArt(一个 JPanel 对象,其中包含一个包含艺术品的 JLabel)添加到 gamePanel 中。当用户按下一个键时,mainMenuArt 被删除。gameControlArt 出现。用户再次按下一个键,gameControlArt 被移除,画布对象被添加到 gamePanel 对象中。

最终发生的事情是:mainMenuArt 出现在 gamePanel 上,这很好。问题出在删除 mainMenuArt 之后,gameControlArt(它是另一个 JPanel 对象,它有一个包含艺术品的 JLabel 对象)没有被添加到 gamePanel(它是一个 JPanel 对象)。相反,当 JPanel 对象没有添加任何组件时,它会显示默认的灰色区域。当用户按下一个键时,画布会显示在 gamePanel 上。

所以总结一下问题是什么:gameControlArt根本没有像它在gamePanel上那样出现。

我尝试了 updateUI()、revalidate 和 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();
}
4

1 回答 1

1

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

我不确定它在这种情况下是否有效,因为我不知道您如何定义 gamePanel 类,但我希望它可以。

于 2013-05-30T16:21:15.843 回答