[英]How to Draw a “Class” in Java on a JPanel
目前我正在使用其中包含JPanel的JFrame。 在我的JPanel中,我已經覆蓋了paint組件方法,但是,我想“繪制”一個“Hero”類作為一個單元。 讓我詳細說明一下。 現在的英雄類有兩個部分:健康欄和圖像。 最初,在我的JPanel的paint組件方法中,我正在單獨繪制角色和健康欄。
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但是當我繪制它們各自的健康欄和圖像排成一行時。 如果您需要任何進一步的解釋,請詢問。 謝謝!
另外,為了激發你可能擁有的任何想法,我想象的是這樣的事情。 另一件事:使用帆布會有用嗎?
paint(Hero);
再次感謝你!
在你的Hero
類中定義一個接受Graphics
對象的繪圖方法:
public void drawHero(Graphics g)
{
// implementation
}
然后在你的主要JPanel
子類中用這個繪圖方法繪制Hero
:
public void paintComponent(Graphics g)
{
// other drawing code
hero.drawHero(g);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.