Text File で Image File を指定

Text File から Image File の名前を取得して描画します。
ayu.jpg

下のリンクをクリックすると、このページで作成したアプレットが実行されます。
Text File で指定された画像を表示する

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

プログラムの作成

  1. メモ帳などでタイプして txturl.java の名前で保存して下さい。
    //★ Text File で Image File を指定    前田 稔
    import java.applet.*;
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.net.URL;
    import javax.imageio.ImageIO;
    
    public class txturl extends Applet
    {   img_name    obj;
    
        // Initialize
        public void init()
        {   obj = new img_name(getCodeBase(),"txtimg.txt");  }
    
        // Paint Method
        public void paint(Graphics g)
        {   obj.View(g,20,20);  }
    }
    
    //★ img_name Object Class
    class img_name extends JFrame
    {   URL       Url;
        BufferedReader Br;
        Image     Img;
        String    wk;
    
        // Constructor
        img_name(URL url, String file)
        {   Url = url;
            // Text File を Open
            try
            {   InputStream is = new URL(url, file).openStream();
                InputStreamReader myin = new InputStreamReader(is);
                Br = new BufferedReader(myin);
            }
            catch(IOException e)
            {   System.out.println("File Open Error");  }
            // Image File を入力
            ImageFile();
        }
    
        // Image File 名を取得して Image を入力
        public void ImageFile()
        {
            wk= LineRead();
            try
            {   URL u = new URL(Url, wk);
                Img = ImageIO.read(u);
            }
            catch (IOException e)
            {   System.out.println("Image Load Error");
                Img= null;
            }
            // BufferedReader を Close
            Close();
        }
    
        // Line Read
        public String LineRead()
        {   try
            {   wk = Br.readLine();  }
            catch(IOException e)
            {   System.out.println("File Read Error");
                wk= "";
            }
            return wk;
        }
    
        // BufferedReader Close
        public void Close()
        {   try
            {   Br.close();  }
            catch(IOException e)
            {   System.out.println("File Close Error");  }
        }
    
        // View
        public void View(Graphics g, int dx, int dy)
        {   if (Img==null)  return;
            g.drawImage(Img,dx,dy,this);
        }
    }
    
  2. txtimg.txt と ayu.jpg を txtimg.htm と同じ URL に格納して下さい。
    txtimg.txt には、描画する Image File の名前だけをタイプします。
    画像ファイルは適当なサイズであれば何でもかまいません。
    ayu.jpg
  3. ホームページを表示する txtimg.htm を作成します。
    <html>
      <body>
        <h3>TEXT FILE Image Name</h3>
        <applet code="txturl.class" width="400" height="200">
        </applet>
      </body>
    </html>
    

プログラムの説明

  1. Applet のプログラムは java.applet.* をインポートして下さい。
    ファイルを入力するので java.io.* と java.net.URL をインポートします。
    ImageIO で画像を入力するので javax.imageio.ImageIO をインポートします。
    img_name obj は img_name Object Class の領域です。
        import java.applet.*;
        import javax.swing.*;
        import java.awt.*;
        import java.io.*;
        import java.net.URL;
        import javax.imageio.ImageIO;
    
        public class txturl extends Applet
        {   img_name    obj;
        
  2. init() メソッドで img_name Class をインスタンス化します。
    getCodeBase() で URL を取得して、TEXT ファイル名(txtimg.txt) と共にパラメータで渡します。
        // Initialize
        public void init()
        {   obj = new img_name(getCodeBase(),"txtimg.txt");  }
        
  3. paint() Method で画像を描画します。
        // Paint Method
        public void paint(Graphics g)
        {   obj.View(g,20,20);
        }
        

img_name Object Class の説明

  1. Br は TEXT FILE を入力する BufferedReader です。
    Img は画像の領域です。
    wk は TEXT FILE から一行分のデータを入力する領域です。
        class img_name extends JFrame
        {   URL       Url;
            BufferedReader Br;
            Image     Img;
            String    wk;
        
  2. Constructorbr で url と file を受け取ります。
    url と file を使って BufferedReader を設定します。
    catch でファイル操作が失敗したときの処理を記述します。
    ImageFile() メソッドで画像を入力します。
        // Constructor
        img_name(URL url, String file)
        {   Url = url;
            // Text File を Open
            try
            {   InputStream is = new URL(url, file).openStream();
                InputStreamReader myin = new InputStreamReader(is);
                Br = new BufferedReader(myin);
            }
            catch(IOException e)
            {   System.out.println("File Open Error");  }
            // Image File を入力
            ImageFile();
        }
        
  3. Text File から Image File の名前を取得して、画像を入力するメソッドです。
    LineRead(); メソッドで、先頭の行(Image File Name)を入力します。
    Url と Image File Name を使って Image を入力します。
    Close() で BufferedReader を Close します。
        // Image File 名を取得して Image を入力
        public void ImageFile()
        {
            wk= LineRead();
            try
            {   URL u = new URL(Url, wk);
                Img = ImageIO.read(u);
            }
            catch (IOException e)
            {   System.out.println("Image Load Error");
                Img= null;
            }
            // BufferedReader を Close
            Close();
        }
        
  4. TEXT FILE から一行入力するメソッドです。
        // Line Read
        public String LineRead()
        {   try
            {   wk = Br.readLine();  }
            catch(IOException e)
            {   System.out.println("File Read Error");
                wk= "";
            }
            return wk;
        }
        
  5. BufferedReader を Close するメソッドです。
        // BufferedReader Close
        public void Close()
        {   try
            {   Br.close();  }
            catch(IOException e)
            {   System.out.println("File Close Error");  }
        }
        
  6. 画像を描画するメソッドです。
        // View
        public void View(Graphics g, int dx, int dy)
        {   if (Img==null)  return;
            g.drawImage(Img,dx,dy,this);
        }
        

【NOTE】

ローカルディスクからのファイルの入出力は、セキュリティの関係で禁止されています。
あえて入出力を行うときは、セキュリティの設定が必要です。
このプログラムでも入力するのは HTML と同じ URL に格納されているファイルです。

Java Game Program