私はJPanelのを拡張していWorldManagerクラスを持っていますただクラスがそうのような方法を描くことを呼び出すことができる方法となる:原則としてJavaの描画画像が
public void paint(Graphics g) { world1.paint(); hero.paint(); }
私はJPanelのを拡張していWorldManagerクラスを持っていますただクラスがそうのような方法を描くことを呼び出すことができる方法となる:原則としてJavaの描画画像が
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のペイントメソッドをpaintComponentメソッドに変更し、super.paintComponent(g)を呼び出して動作させましたが、通常のペイントメソッドの代わりにpaintComponentを使用する必要がある理由を説明できますか? – Bob
@Chris:これを今追加しました。 –
@Chris質問に「回答/正しい」と記入してください。これは、後で回答を探している人に役立ちます。 –
"スイングプログラムは、' paint() 'をオーバーライドするのではなく、' paintComponent() 'をオーバーライドする必要があります。 [AWTとスイングのペイント:ペイント方法](http://java.sun.com/products/jfc/tsc/articles/painting/index.html#callbacks) – trashgod