基本上我想做的是将一个 JPanel 添加到另一个 JPanel 上,该 JPanel 使用 paintComponent() 方法在其上绘制了图形。但是我尝试添加的 JPanel 没有显示,因为它被带有图形的 JPanel 覆盖了。
我怎样才能做到这样,当我将 JPanel 添加到带有图形的面板时,它会在前面显示 JPanel 而不是被图形覆盖?
感谢所有答案! :)
如果您需要代码,请告诉我,我很乐意将其放在此处。
好的,这是代码:
包 javavideogame;
公共(public)类游戏扩展 JPanel 实现 ActionListener,Runnable
{
公共(public)游戏(MainCharacter 角色)
{
设置布局(空);
设置焦点(真);
}
public void paintComponent(图形 g)
{
super.paintComponent(g);
g.drawImage(ground, 0, 0, this);
g.drawImage(character.getImage(), character.getX(), character.getY(), 这个);
g.setColor(Color.RED);
g.drawRect(10, 10, character.getMaxHealth(), 10);
g.fillRect(10, 10, character.getHealth(), 10);
g.处置();
}
公共(public)无效 getInventoryScreen()
{
Main.inv = new Inventory();
Main.game.add(Main.inv);
}
}
这是我要添加到游戏 JPanel 的 JPanel 的代码
公共(public)类 Inventory 扩展 JPanel
{
公共(public)库存()
{
设置布局(空);
setSize(400, 300);
设置背景(颜色。黑色);
添加 key 监听器(这个);
设置焦点(真);
}
}
最佳答案
自定义绘画是通过覆盖 paintComponent(...) 方法完成的。我的猜测是您正在覆盖 paint() 方法。
阅读 Custom Painting 上的 Swing 教程中的这一部分.因为您重写了错误的方法,您最终会先绘制子项,然后在上面完成自定义绘制。
如果您需要更多帮助而不是发布您的 SSCCE证明问题。
关于java - 如何将 JPanel 添加到另一个具有图形的 JPanel 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5071970/