イメージを表示しよう!


今回は、イメージファイルに関する話です。「はじめてのJava」で、簡単な図形を描画する方法については既に説明しました。paintメソッドを用意し、そこでGraphicsのメソッドを呼び出して描くのでしたね。

が、図形の組み合わせでは、あまり複雑なことはできません。より高度なビジュアルを作るには、あらかじめイメージファイルとして表示するイメージを用意しておき、これを読み込んで表示するのが基本でしょう。では、実際に、イメージファイルを読み込んで表示するサンプルを作ってみましょう。

package jp.allabout;

import java.awt.*;
import java.awt.event.*;

public class SampleApp extends Frame {
  Image img;

  public SampleApp(){
    this.setSize(new Dimension(300,200));
    this.addWindowListener(new WindowMyAdapter());
    img = Toolkit.getDefaultToolkit().getImage("image.jpg");
  }
  
  public void paint(Graphics g){
    if (img != null){
      g.drawImage(img,0,0,this);
    }
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
  
  class WindowMyAdapter extends WindowAdapter {
    
    public void windowClosing(WindowEvent arg0) {
      System.exit(0);
    }
  }
}


プログラムで注意すべき点は、イメージファイルの配置場所です。ここでは、jp.allaboutというパッケージにクラスを作成していますね。ということは、作業ディレクトリの「jp」フォルダ内の「allabout」フォルダの中にクラスファイルが作成されるということになります。

通常、Javaのプログラムを実行する場合には、カレントディレクトリをプログラムのフォルダがある場所(「jp」フォルダがおいてある場所)に設定して実行するはずです。つまり、このフォルダが、プログラムの作業ディレクトリになるわけです。ファイルを読み込む場合も、(パスなどを指定せずファイル名だけだと)この場所からファイルを探します。したがって、ここにimage.jpgというファイルを用意してやる必要があります。

最近は、Eclipseなどの統合開発環境を使ってプログラムを書いている人も多いことと思いますが、こうした開発環境では、プログラム実行時の作業ディレクトリが別のところに指定されていることもあるので注意しましょう。例えばEclipseの場合、Javaアプリケーションを実行する際の作業ディレクトリはプロジェクトのフォルダになります。ですから、プロジェクトフォルダの中にimage.jpgファイルを用意する必要があります。