我有延伸的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