• ベストアンサー

ジャヴァのスウィングについて

スウィングでg.drawLineなどのメソッドはどうすればつかえるのでしょうか。どうしてもわかりません。こうすればOKと思ったのですが Graphics g= new Graphics(); g.drawLine(20,20,30,30); みたいな。でもこれだとエラーになります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

AWTにしろSwingにしろ、Graphicsは「描画をしようと思うコンポーネントに設定されたGraphicsインスタンス」を使わなければ意味がありません。  AWT/Swingのコンポーネントは、それぞれのコンポーネントクラスの中で描画用のGraphicsインスタンスを保持しています。それを使って各コンポーネントは描画をしているわけです。ですから、例えばあるJFrameに描画をしたいのであれば、まずそのJFrameインスタンスに描画をするためのGraphicsインスタンスを取得し、それの中のメソッドを呼び出してやらないとダメです。  具体的には、描画用のメソッドをオーバーライドするのが一般的です。 public void paint(Graphics g){ ・・・ここにg.drawLineといった形で描画・・・ } または、Swingの場合、 public void paintComponent(Graphics g){ super.paintComponent(g); ・・・ここにg.drawLineといった形で描画・・・ } だいたいこのあたりのメソッドをオーバーライドします。引数で渡されるGraphicsが、そのコンポーネントに描画をするためのGraphicsインスタンスです。この中のメソッドを呼び出せば、そのコンポーネントに描画ができます。  AWTならpaintが基本ですが、Swingの場合、フレーム以外のコンポーネントでは、他のコンポーネントへの影響などからpaintComponentを使うことが推奨されています。JFrameなどのフレームクラスではpaintを使用します。 おそらくJFrameあたりのクラスをextendsしてクラスを作っていることでしょうから、そこにpaintメソッドをオーバーライドし、そこで描画をするのが一番わかりやすいでしょう。

syokatukoumei
質問者

お礼

なるほど!!!!!!ありがとうございます。