目前我使用的是一个 JFrame,里面有一个 JPanel。在我的 JPanel 中,我重写了 paint 组件方法,但是,我想“绘制”一个“Hero”类作为一个单元。让我详细说明。目前的英雄类有两部分:健康栏和图像。最初,在我的 JPanel 的绘制组件方法中,我是单独绘制角色和健康栏。
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,但意识到这是一个愚蠢的想法。有没有办法更有效地做到这一点?我现在正在寻找解决方案的最大原因之一是我希望能够将角色类扩展到其他类 IE:Monster、Knight、Goblin,但是当我绘制它们时,它们各自的健康栏和图像排成一行。如果您需要任何进一步的解释,请询问。谢谢!
此外,为了激发您可能有的任何想法,我正在想象这样的事情。另一件事:使用 Canvas 会有任何用处吗?
paint(Hero);
再次感谢!
最佳答案
在你的 Hero
类中定义一个接受 Graphics
对象的绘图方法:
public void drawHero(Graphics g)
{
// implementation
}
然后在您的主 JPanel
子类中使用此绘制方法绘制 Hero
:
public void paintComponent(Graphics g)
{
// other drawing code
hero.drawHero(g);
}
关于java - 如何在 JPanel 上用 Java 绘制 "Class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30337693/