GUI プログラム Ⅳ 画像指定ウィンドウの生成 ファイル名 :awtimage.java import java.awt.*; import java.awt.event.*; public class awtimage extends Frame // コンポーネントクラスの宣言 Button btnbrowse; Label lblcaption7; TextField txtimage; // コンストラクタ public awtimage(string title, int width, int height, int top, int left, boolean resize) // ウィンドウの設定 settitle(title); setsize(width, height); if(top>0 && left>0) setlocation(top, left); else Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); setlocation((d.width-width)/2,(d.height-height)/2); setresizable(resize); // レイアウトマネージャの無効化 setlayout(null); // コンポーネントの生成 lblcaption7 = new Label(" 画像 "); add(lblcaption7); lblcaption7.setbounds(20, 30,60,20); txtimage = new TextField(); add(txtimage); txtimage.setbounds(90, 30,200,20); // Button クラスの生成 btnbrowse = new Button(" 参照..."); add(btnbrowse); btnbrowse.setbounds(300,30,50,20); // 匿名内部クラス ( ウィンドウリスナ用 ) WindowAdapter wad = new WindowAdapter() -1-
public void windowclosing(windowevent e) System.exit(0); ; addwindowlistener(wad); System.exit(0); ; ファイル名 :awttest.java public class awttest public static void main(string arg[]) //=============================================== // ウィンドウ (Frame クラス ) のインスタンスを生成 //=============================================== awtimage win = new awtimage(" 画像データベース ", 370, 320, -1, -1, false); //================== // ウィンドウの表示 //================== win.setvisible(true); 1. 参照ボタンをクリックすると ファイルを開く ダイアログボックスが表示され 画像ファイルを指定する事が出来る様にする 2. 指定された画像ファイル名を フルパスで テキストフィールドに表示する様にする 3. 指定された画像ファイルを 画面に表示する -2-
ファイルの指定 ファイル名 :awtimage.java 変更部分而巳 // コンポーネントクラスの宣言 Image imgpicture = null; // 追加 // ファイルの指定 FileDialog fd = new FileDialog(new Frame(), " ファイルを開く ", FileDialog.LOAD); fd.setvisible(true); txtimage.settext(fd.getdirectory()+fd.getfile()); // 画像の表示 Toolkit tk = Toolkit.getDefaultToolkit(); imgpicture = tk.getimage(txtimage.gettext()); repaint(); ; // 画面描画メソッド public void paint(graphics g) if (imgpicture!= null) super.paint(g); g.drawimage(imgpicture,20,60,200,200,this); 1. 現在の状態では 画像以外のファイルも指定する事が出来る 画像以外のファイルを指定しても エラーが発生する事は無いが 操作性を考慮すれば 画像ファイル以外は 一覧に表示しない方が望ましい OS にも依存するが 此れを実現する 2. ファイル選択のダイアログ表示は 上記で使用した java.awt パッケージの FileDialog クラス以外にも javax.swing パッケージの JFileChooser クラスを用いて表示する事が出来る ( 但し Java 1.4 以上 ) 環境が許すなら 此方を用いた方法を試して見る 3. フィルタを設定するクラスは 頻繁に利用する場合は 汎用的なクラスと仕て外部クラスで作成する事が一般的で有るが 此処では 特定のクラスと仕て匿名内部クラスで作成する -3-
ファイル指定時のフィルタ 1 ファイル名 :awtimage.java 変更部分而巳 // ファイルの指定 FileDialog fd = new FileDialog(new Frame(), " ファイルを開く ", FileDialog.LOAD); fd.setfile("*.gif"); // 此の部分を追加 fd.setvisible(true); 1. 上記は 簡単に単一のファイルの種類に対してフィルターリングを実現する事が出来るが ファイルの種類を選択し 表示されるファイルを切り替える事が出来ない 此れを 少なく共 画像ファイルと総てのファイルの選択切替が出来る様にする ファイル指定時のフィルタ 2 ファイル名 :awtimage.java 変更部分而巳 import javax.swing.*; // ファイルの指定 ( 匿名内部クラスで定義 ) JFileChooser fd = new JFileChooser(); // フィルタの設定 fd.setfilefilter ( // 下記はフルネームで記述する (java.io.filefilter と区別する為 ) new javax.swing.filechooser.filefilter() public boolean accept(file f) if (f!= null) // ディレクトリの場合 if (f.isdirectory()) return true; -4-
// ファイルの場合 String s = f.getname(); int i = s.lastindexof('.'); if (i!= -1) s = s.substring(i+1).tolowercase(); if ((s.equals("jpg")) (s.equals("gif"))) return true; return false; public String getdescription() return " 画像ファイル (JPG,GIF)"; ); // ファイル選択ダイアログの表示 fd.showopendialog(null); // ファイル名 ( フルパス ) の表示 // getselectedfile:javax.swing.jfilechooser クラスのメソッド // getabsolutepath:java.io.file クラスのメソッド txtimage.settext(fd.getselectedfile().getabsolutepath()); // 画像の表示 Toolkit tk = Toolkit.getDefaultToolkit(); imgpicture = tk.getimage(txtimage.gettext()); repaint(); ; 1. 画像登録機能を 簡易データベースに加え 画像をデータベースに登録する事が出来る様にする 但し 画像自体をデータベースに埋め込むのでは無く データベースには 画像のパスを登録する事とする 2. 亦 データの登録画面に読込ボタンを作成し 此のボタンをクリックすると データの一覧が表示される様に 統合環境を構築する -5-