Canvas を使う

Swing で Windows に Canvas を張り付けて図形を描画します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして WinCanvas.java の名前で保存して下さい。
    //★  Canvas を張り付けて矩形を描画    前田 稔
    import java.awt.*;
    import javax.swing.*;
    
    class WinCanvas extends JFrame
    {   // Main()
        public static void main(String[] args)
        {   new WinCanvas();
        }
    
        // Constructor
        WinCanvas()
        {   super("Canvas");
            setSize(180, 120);
            setLayout(new BorderLayout());
            MyCanvas app = new MyCanvas();
            add(app, BorderLayout.CENTER);
            setVisible(true);
        }
    }
    
    // MyCanvas Class
    class MyCanvas extends Canvas
    {   public void paint(Graphics g)
        {   g.setColor(Color.red);
            g.drawRect(10,10,120,50);
        }
    }
    
  2. java のソースファイルをコンパイルして class オブジェクトを実行して下さい。
    コンパイルの詳細は Java2 を動かす または Jcpad の設定を参照して下さい。
    Windows の画面に矩形が表示されたら完成です。

プログラムの説明

  1. キャンバス(Canvas) は、線/丸/矩形などの図形を描画する際に用いられる部品です。
    通常、Canvas クラスのサブクラスを定義して使用します。
    paint() は、show() や repaint() が呼ばれたときや、隠れていたウィンドウが表に表示されるときなどに自動的に呼び出されるメソッドです。
  2. このプログラムでは Swing を用いるため java.awt と javax.swing をインポートしています。
    class WinCanvas は JFrame を継承しています。
        import java.awt.*;
        import javax.swing.*;
        class WinCanvas extends JFrame
        {
        
  3. WinCanvas のコンストラクタです。
    super() で継承したクラスのコンストラクタを呼び出します。
    setLayout() でレイアウトを設定します。
    new MyCanvas() で MyCanvas Class をインスタンス化します。
    add(app, BorderLayout.CENTER) でパネルに配置します。
        // Constructor
        WinCanvas()
        {   super("Canvas");
            setSize(180, 120);
            setLayout(new BorderLayout());
            MyCanvas app = new MyCanvas();
            add(app, BorderLayout.CENTER);
            setVisible(true);
        }
        
  4. Canvas を継承した MyCanvas Class です。
    paint() メソッドで矩形を描画します。
        // MyCanvas Class
        class MyCanvas extends Canvas
        {   public void paint(Graphics g)
            {   g.setColor(Color.red);
                g.drawRect(10,10,120,50);
            }
        }
        

超初心者のプログラム入門(Java2)