如何画“a”字;“类”;在JPanel上使用Java
目前,我正在使用一个JFrame,其中包含一个JPanel。在我的JPanel中,我已经重写了paint组件方法,但是,我想“绘制”一个“英雄”类作为一个单元。让我详细说明一下。现在的英雄类有两个部分:一个健康栏和一个图像。最初,在我的JPanel的paint component方法中,我分别绘制角色和健康栏如何画“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
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参数中的图形。非常感谢你!