java - 如何将 JPanel 添加到另一个具有图形的 JPanel 上?

标签 java swing graphics jpanel

基本上我想做的是将一个 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/

相关文章:

java - Hamcrest:如何测试一个对象的多个属性

java - 关于java使用oracle操作图像

java - 如何给面板添加滚动条?

javascript - 如何找到具有与 X 相关的起点、宽度和 Angular 点坐标

java - hibernate 。如何将自己的类映射为实体中的属性类型?

Java:WAITINGActionEvent

java - 通过 JCheckBox 设置 JScrollPane 可见/不可见不起作用

r - R 生成的 PDF 具有不一致的 MD5 校验和

c++ - 计算三次贝塞尔曲线的最快方法?

java - 将自签名证书换成受信任的证书?