繁体   English   中英

添加的JPanel不显示Java

[英]Added JPanel does not show up Java

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

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

相反发生的事情是:mainMenuArt出现在gamePanel上,很好。 问题出在移除mainMenuArt之后,gameControlArt(这是另一个具有包含美术作品的JLabel对象的JPanel对象)没有被添加到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();
}

尝试使用getContentPane.add()而不是add。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM