gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:55:16 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com