Canvas を継承する

Canvas(AWT) を継承して矩形を描画します。

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

プログラムの作成

  1. Canvas(AWT) を継承して矩形を描画する方法です。
    //★ Canvas を継承する    前田 稔
    import java.awt.*;
    
    public class App extends Canvas
    {
        // Main()
        public static void main(String args[])
        {   new App();
        }
    
        // Constructor
        App()
        {   setBackground(Color.white);
            setSize(160,120);
            Frame f = new Frame();
            f.add(this);
            f.pack();
            f.show();
        }
    
        // Paint Method
        public void paint(Graphics g)
        {   g.setColor(Color.red);
            g.drawRect(5,2,120,80);
        }
    }
    
  2. java のソースファイルをコンパイルして class オブジェクトを実行して下さい。
    コンパイルの詳細は Java2 を動かす を参照して下さい。

プログラムの説明

  1. AWT(Abstract Windowing Tools) を使用するので java.awt.* をインポートします。
    extends で Canvas を継承します。
        import java.awt.*;
        public class App extends Canvas
        {
        
  2. main() では App Class をインスタンス化(生成)するだけです。
        public static void main(String args[])
        {   new App();
        }
        
  3. コンストラクタでは、キャンバスに App Class を設定(張り付け)ます。
    まず new Frame() で Frame を生成します。
    そして f.add(this) で Frame に App Class を設定します。
    f.pack() はウインドウのサイズを最適に調整するメソッドです。
    f.show() は f.setVisible() と同じ機能で、以前使われていたメソッドです。
        // Constructor
        App()
        {   setBackground(Color.white);
            setSize(160,120);
            Frame f = new Frame();
            f.add(this);
            f.pack();
            f.show();
        }
        
  4. paint() では赤色の矩形を描画します。
        // Paint Method
        public void paint(Graphics g)
        {   g.setColor(Color.red);
            g.drawRect(5,2,120,80);
        }
        

プログラムの作成

  1. Canvas(AWT) を継承して Constructor を使わずに作成します。
    //★ Canvas を継承する(Constructor 無し)    前田 稔
    import java.awt.*;
    
    public class AppDirect extends Canvas
    {
        // Main()
        public static void main(String args[])
        {   AppDirect app = new AppDirect();
            Frame frame = new Frame("DrawRect");
            frame.add(app, BorderLayout.CENTER);
            frame.setSize(160, 140);
            frame.setVisible(true);
        }
    
        // Paint Method
        public void paint(Graphics g)
        {   g.setColor(Color.red);
            g.drawRect(5,2,120,80);
        }
    }
    
  2. 説明は先のプログラムを参照して下さい。

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