imgclass で画像を描画

Java Applet で imgclass を定義して画像を描画します。

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

プログラムの作成

  1. メモ帳などでタイプして imgcls.java の名前で保存して下さい。
    Applet はサーバーにアップロードすることが前提なので、ファイル名やクラス名を小文字で統一することにします。
    //★ Image を描画する簡単な Class です    前田 稔
    //   appletviewer imgcls.htm
    import java.applet.*;
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import javax.imageio.ImageIO;
    import java.net.URL;
    
    public class imgcls extends Applet
    {   imgclass    obj;
    
        public void init()
        {   setBackground(Color.gray);
            obj = new imgclass(getCodeBase(), "ayu.jpg");
        }
    
        public void paint(Graphics g)
        {   super.paint(g);
            obj.View(g,10,10);
        }
    }
    
    //★ 画像を描画する Image Class
    class imgclass extends Applet
    {   Image Img;
    
        // Constructor
        imgclass(URL url, String file)
        {   try
            {   URL u = new URL(url, file);
                Img = ImageIO.read(u);
            }
            catch (IOException e)
            {   System.out.println("Image Load Error");
                Img= null;
            }
        }
    
        // View
        public void View(Graphics g, int dx, int dy)
        {   if (Img==null)  return;
            g.drawImage(Img,dx,dy,this);
        }
    }
    
  2. JPEG の画像(ayu.jpg)をプログラム(imgcls.class)と同じフォルダーに格納して下さい。
    テストするときは、適当なサイズの JPEG 画像であれば何でもかまいません。
  3. ホームページを表示する imgcls.htm を作成します。
    <html>
      <body>
        <h3>Image Class</h3>
        <applet code="imgcls.class" width="300" height="200">
        </applet>
      </body>
    </html>
    

Java プログラムの説明

  1. Applet のプログラムは java.applet.* を import して、extends(クラスの継承) で Applet を指定して下さい。
    Java ウインドウ操作用の API を使用するので java.awt.* をインポートします。
    ImageIO で画像を入力するので java.io.*, javax.imageio.ImageIO, java.net.URL をインポートします。
    imgclass obj; は object class(imgclass) の領域です。
        import java.applet.*;
        import javax.swing.*;
        import java.awt.*;
        import java.io.*;
        import javax.imageio.ImageIO;
        import java.net.URL;
    
        public class imgcls extends Applet
        {   imgclass    obj;
        
  2. init() はアプレットの初期化を行うメソッドです。
    背景色を gray に設定しています。
    new imgclass() で imgclass obj をインスタンス化します。
    Java Applet の動作環境では、ローカルフォルダーはセキュリティで保護されています。
    一般的に画像は、アプレットのディレクトリ(CodeBase または DocumentBase)から入力します。
    getCodeBase() で URL を取得して "ayu.jpg" と共にパラメータで渡します。
    CodeBase はプログラムのディレクトリなので、DocumentBase の方が適しているかも知れません。
        public void init()
        {   setBackground(Color.gray);
            obj = new imgclass(getCodeBase(), "ayu.jpg");
        }
        
  3. paint() メソッドで画像を描画します。
    super.paint(g) を呼び出して画面を初期化(クリア)します。
    obj.View() で画像を描画します。
        public void paint(Graphics g)
        {   super.paint(g);
            obj.View(g,10,10);
        }
        

imgclass の説明

  1. Image Img; は画像データ(イメージ)の領域です。
        class imgclass extends Applet
        {   Image Img;
        
  2. Constructor では url と file を受け取ります。
    url と file から画像ファイルの URL を取得して ImageIO で画像を入力します。
    try と catch で例外が起こったときの処理を記述します。
        // Constructor
        imgclass(URL url, String file)
        {   try
            {   URL u = new URL(url, file);
                Img = ImageIO.read(u);
            }
            catch (IOException e)
            {   System.out.println("Image Load Error");
                Img= null;
            }
        }
        
  3. View メソッドで画像を描画します。
    dx, dx がウインドウの座標です。
        // View
        public void View(Graphics g, int dx, int dy)
        {   if (Img==null)  return;
            g.drawImage(Img,dx,dy,this);
        }
        

Java Game Program