我有延伸的JPanel並有WorldManager類:JPanel類之外的Java繪製圖像
public void paint(Graphics g) {}
我想什麼做的是有單獨的類,就像一個世界級的用自己的油漆方法和能夠只是調用的類paint方法,像這樣:
public void paint(Graphics g) { world1.paint(); hero.paint(); }
我有延伸的JPanel並有WorldManager類:JPanel類之外的Java繪製圖像
public void paint(Graphics g) {}
我想什麼做的是有單獨的類,就像一個世界級的用自己的油漆方法和能夠只是調用的類paint方法,像這樣:
public void paint(Graphics g) { world1.paint(); hero.paint(); }
原則上,有什麼不對你的方法。
由於trashgod指出,你應該覆蓋的paintComponent方法而不是paint方法。
這樣做的原因是注意在article linked by trashgod:這樣一來,paintBorder()
和paintChildren()
方法可以做他們的邊框和子組件的畫,你可以自由地只想到真正的內容。
下面是一個例子:
class WorldManager extends JPanel
{
private World world1;
private Person hero;
public void paintComponent(Graphics g) {
super.paintComponent(); // paints the background, if opaque
world.paint(g);
hero.paint(g);
}
}
那麼,什麼是你的問題,實際上是?
@Paulo 因此,我將我的WorldManager中的paint方法更改爲paintComponent方法,並調用super.paintComponent(g),它可以工作,但是能否向我解釋爲什麼必須使用paintComponent而不是常規的paint方法? – Bob 2011-03-08 13:18:31
@Chris:我現在加了這個。 – 2011-03-08 13:33:58
@Chris請不要忘記將問題標記爲「已回答/正確」。這有助於以後搜索答案的人。 – 2011-03-08 15:01:54
「Swing程序應該重載'paintComponent()'而不是重寫'paint()'。」 [在AWT和Swing中繪製:繪製方法](http://java.sun.com/products/jfc/tsc/articles/painting/index.html#callbacks)。 – trashgod 2011-03-07 23:40:00