コンポーネットへ描画する場合は、
描画対象や、描画ツールを管理するGraphicsクラスを使います。
Graphicsクラスには、『描画先の情報』と、
それに『描画するさまざまなメソッド』が用意されています。
つまり、描く対象のキャンバスと、
それに描く時に使う筆やぺんなどたくさんの道具をカプセル化したクラスと言えます。
java.lang.Object
└java.awt.Graphics
詳細は次のリンクで調べましょう。
swingのパネル(JPanel)へ描画する場合は、 JPanelのpaintComponentメソッドをオーバーライドします。 このメソッドの引数が、パネルに描画するためのGraphicsオブジェクトで、 以下では長方形左上の座標を、(5, 5)として、 幅200, 高さ100の長方形を 描いて、次に内接する楕円を描いてる例です。
package paint; import java.awt.*;//Color Graphicsなどのパッケージ import javax.swing.*;//JPanelのパッケージ //描画対象のパネル public class PaintPanel extends JPanel { //描画すべきタイミングで、呼び出されるメソッド public void paintComponent(Graphics g){ super.paintComponent(g);//スーパークラスJPanelの描画処理 Color color1 = new java.awt.Color(0x99, 0, 0x0FF);//RGBの色を指定して色を作成 g.setColor(color1);//次に描画する時の色を指定 g.drawRect(5, 5, 200, 100);//(5,5)が左上隅の座標で、幅200、高さ100の長方形描画 g.drawOval(5, 5, 200, 100);//(5,5)が左上隅の座標で、幅200、高さ100の楕円描画 } }
このパネルをJApplet継承クラスに配置した例を示します。
楕円塗りつぶし
以下で、このPaintPanelのパネルを使ったJAppletの継承したPainterクラスを示します。
なお、以下ではローカル作品としても使えるように、Painterクラスをパネルで使ったPainterFrame
クラスも定義しています。(JFrameの継承クラス)
publicのPainterクラスにあるmainで、PainterFrameを生成しています。
package paint; import javax.swing.*;//JApplet 、JFrame.*のパッケージ //上記パネルを配置したアプレット作品用クラス public class Painter extends JApplet { PaintPanel paintPanel; //内部に使う描画対象のパネル public Painter() {//コンストラクタ paintPanel = new PaintPanel();//描画対象のパネルの生成 this.setContentPane(paintPanel);//上記パネルをフレームのパネルとして設定 } public static void main(String []arg){ new PainterFrame();//ローカル時用に使う下記フレーム生成 } } //アプレットでなくローカルで使う時のフレーム(上記アプレットをJRootPaneにする) class PainterFrame extends JFrame { Painter painter;//上記のアプレットパネルを管理する PainterFrame(){ //コンストラクタ this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//閉じるボタンで終了 this.painter = new Painter();//上記Painterを生成配置 this.setContentPane(painter); this.setTitle("Painter"); this.setBounds(0, 0, 300, 300);//サイズ指定 this.setVisible(true); } }
上記を実行するボタンです。⇒ 楕円塗りつぶし
以上の各プログラムを確認したらこのボタンをクリックください。→