如何画“a”字;“类”;在JPanel上使用Java

如何画“a”字;“类”;在JPanel上使用Java,java,swing,Java,Swing,目前,我正在使用一个JFrame,其中包含一个JPanel。在我的JPanel中,我已经重写了paint组件方法,但是,我想“绘制”一个“英雄”类作为一个单元。让我详细说明一下。现在的英雄类有两个部分:一个健康栏和一个图像。最初,在我的JPanel的paint component方法中,我分别绘制角色和健康栏 public void paintComponent(Graphics g){ g.drawImage(h.getImage(), h.getX(), h.getY(),n

目前,我正在使用一个JFrame,其中包含一个JPanel。在我的JPanel中,我已经重写了paint组件方法,但是,我想“绘制”一个“英雄”类作为一个单元。让我详细说明一下。现在的英雄类有两个部分:一个健康栏和一个图像。最初,在我的JPanel的paint component方法中,我分别绘制角色和健康栏

public void paintComponent(Graphics g){
        g.drawImage(h.getImage(), h.getX(), h.getY(),null);
        g.setColor(Color.red);
        g.fillRect(h.getX()+7, h.getY()-16, 50, 10);
        g.drawLine(h.getX() + (h.getImage().getWidth(getFocusOwner())/2), h.getY()-40, h.getX() + (h.getImage().getWidth(getFocusOwner())/2), h.getY()+40);


    }
这将健康栏和角色正确地对齐在一起,但是,这看起来效率低下且混乱。那么,我是否可以把这两个元素画成一个整体?我考虑过把它们做成一个单独的JPanel,但意识到这是一个愚蠢的想法。有没有更有效的方法?我现在寻找解决方案的最大原因之一是,我希望能够将角色类扩展为其他类,例如:怪物、骑士、地精,但当我绘制它们各自的健康栏和图像时,它们会排列在一起。如果您需要任何进一步的解释,请询问。谢谢大家!

另外,为了激发你可能有的想法,我正在想象这样的事情。另一件事:使用画布有什么用处吗

paint(Hero);

再次感谢你

在您的
Hero
类中定义一个接受
Graphics
对象的绘图方法:

public void drawHero(Graphics g)
{
    // implementation
}
然后在主
JPanel
子类中使用此绘制方法绘制
Hero

public void paintComponent(Graphics g)
{
    // other drawing code

    hero.drawHero(g);
}

通常情况正好相反:
hero.paint()
我真的不知道。我从来没有画过一整堂课。您是否需要重写一个方法,比如JPanel必须重写paintComponent?它不是更像g.draw(hero.drawHero(g))@SteveKnabe否,
Graphics
类不包含
draw
方法。您必须实现自己的基本方法,然后将
图形
对象传递给周围的人。哦,我现在明白了。在heros drawHero方法中,您正在编辑paintComponent参数中的图形。非常感谢你!