- ベストアンサー
ジャヴァのスウィングについて
スウィングでg.drawLineなどのメソッドはどうすればつかえるのでしょうか。どうしてもわかりません。こうすればOKと思ったのですが Graphics g= new Graphics(); g.drawLine(20,20,30,30); みたいな。でもこれだとエラーになります。
- みんなの回答 (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メソッドをオーバーライドし、そこで描画をするのが一番わかりやすいでしょう。
お礼
なるほど!!!!!!ありがとうございます。