AWTの基本的な使い方のメモ
LastUpdate : 07/01/19
AWT(Abstract Window Toolkit)の使い方についての、基本的な使い方のメモです。
内容はJDK1.2を基準にしています(しかし可変長引数を使っているところも有り1.5以上でないと動かないものがあります)。
内容についてですが、私が昔初めてJavaをさわった時に読んでいた『独習Java』(翔泳社)を参考にしています。
この本を読み、内容を理解し、理解した内容を、私が作成したサンプルコードと共にここに書き出しています。
Componentクラスがそれぞれのコントロールの親のクラスです。「 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Component.html 」。これを基本にして、作成していきます
私の感覚では、目新しい単語が三つほどでてきました。それが以下のものです。
・ソース : 入力などが発生した場合、リスナにイベントを送信するのが仕事。
・リスナ : ソースから送信されたイベントを受信するのが仕事。
・アダプタクラス : リスナのインターフェイスのメソッドを、仮のメソッドですべて実装してある便利クラス。
ソースからイベントが発信されてそれを受信したリスナが、そのイベントの種類によって、あらかじめ決められているメソッドを呼び出す、という処理を行なうみたいです。
おのおののイベントクラスの上位には、AWTEventクラスがあります。AWTEventの親はEventObject、EventObjectの親はObjectクラスとなっています。
マウスのイベントのリスナは MouseListenerインターフェイス , MouseMotionListenerインターフェイス を使います。これらのインターフェイスのメソッドを実装することで、それぞれのイベントに対しての処理を書くことができます。
☆ マウスの動きをキャッチする。
import java.applet.Applet; import java.awt.*; import java.awt.event.*; /* <applet code="TestMain" width=640 height=480> </applet> */ public class TestMain extends Applet implements MouseListener,MouseMotionListener { String m_Msg; //表示するメッセージ int m_x,m_y; //マウスのイベントが発生したときの座標。 //--------------------------------------------- //アプレットのメソッド public void init() { addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g) { StringBuffer Buf = new StringBuffer(); Buf.append(getMsg()); Buf.append("座標: "+GetCoordinatesX()+","+GetCoordinatesY()); g.drawString(Buf.toString(),50,50); } //--------------------------------------------- //メソッドの内部で使われる便利なメソッド void showMessage(String Mes,MouseEvent Me) { setMsg(Mes); setMouseCoordinates( Me.getPoint() ); repaint(); } void setMsg(String Str) { m_Msg = new String(Str); } void setMouseCoordinates(Point P) { m_x = P.x; m_y = P.y; } String getMsg(){ return m_Msg; } int GetCoordinatesX(){ return m_x; } int GetCoordinatesY(){ return m_y; } //--------------------------------------------- //MouseListenerインターフェイスの実装 public void mouseClicked(MouseEvent Me) { showMessage("マウスのボタンがクリックされました。",Me); } public void mouseEntered(MouseEvent Me) { showMessage("マウスがウインドウの中に入りました。",Me);; } public void mouseExited(MouseEvent Me) { showMessage("マウスがウインドウの中から出て行きました。",Me); } public void mousePressed(MouseEvent Me) { showMessage("マウスのボタンが押されました。",Me); } public void mouseReleased(MouseEvent Me) { showMessage("マウスのボタンが放されました",Me); } //--------------------------------------------- //MouseMotionListenerのインターフェイスの実装。 public void mouseDragged(MouseEvent Me) { showMessage("マウスのボタンがドラッグされています。",Me); } public void mouseMoved(MouseEvent Me) { showMessage("マウスが動いています。",Me); } //--------------------------------------------- //このクラスのコンストラクタ public TestMain() { m_Msg = new String("まだ何もされてません。"); repaint(); } } |
Labelは文字列を表示するコントロールです。エディットボックスとの違いは、ユーザーからの入力を前提としていないことでしょうか?
また、表示位置は、指定することができません(勝手にてきとうな場所に配置される)。どうしても、位置を指定したい場合は、Panelなどのコントロールの上に作成しなければなりません。
実行してみるとわかるのですが、 \n の改行記号をあっさりと無視してくれます。Graphics::drawStringメソッドも改行記号などを無視しますので、同じ仕様なのでしょうか?
☆ Labelコントロールを作成する。
import java.applet.*; import java.awt.*; public class AwtTest2 extends Applet { public void init() { Label Lbl = new Label("ラベルです。\nこれが文字列です。",Label.CENTER); add(Lbl); } } |
ボタンコントロールの使い方です。
☆ ボタンコントロールの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest3 extends Applet implements ActionListener { Label m_Lbl; public void init() { //メッセージ表示用のラベルを作成。 m_Lbl = new Label("ボタンを押してください。"); add(m_Lbl); //ボタンを作成。 Button Btn1 = new Button("test1"); Btn1.addActionListener(this); add(Btn1); Button Btn2 = new Button("test2"); add(Btn2); Btn2.addActionListener(this); } //ActionListenerインターフェイスのメソッドの実装。 public void actionPerformed(ActionEvent Ae) { if( "test1".equals( Ae.getActionCommand() ) ) m_Lbl.setText("test1ボタンが押されました。"); else if( "test2".equals( Ae.getActionCommand() ) ) m_Lbl.setText("test2ボタンが押されました。"); } } |
CanvasはGraphicsインターフェイスで描画できる、描画領域のことのようです。Graphicsインターフェイスを通して、いろんなイメージが描画できます。
独自クラスにCanvasクラスを継承し、paintメソッドをオーバーライドして使うようです。
サンプルでは、キャンバスに、円を描いてみました。
Canvasクラスの内容は「 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/awt/Canvas.html 」を参照。
☆ Canvasクラスの使い方。
import java.applet.*; import java.awt.*; public class AwtTest4 extends Applet { AwtTest4_Canvas m_ImgArea; public void init() { m_ImgArea = new AwtTest4_Canvas(); //キャンバスのサイズを設定する。 m_ImgArea.setSize(640,480); //コンテナにキャンバスの追加。 add(m_ImgArea); } } //Canvasクラスを継承し、メソッドをオーバーライドすることで //独自処理を実行させる。 class AwtTest4_Canvas extends Canvas { public void paint(Graphics g) { g.drawArc( 10,10,300,300,0,360 ); } } |
チェックボックスの使い方です。
☆ チェックボックスのテスト。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest5 extends Applet implements ItemListener { Label m_Lbl; //状態の表示に使う。 public void init() { m_Lbl = new Label("チェックボックスのテスト。"); add(m_Lbl); Checkbox Check = new Checkbox("テスト"); Check.addItemListener(this); add(Check); } public void itemStateChanged(ItemEvent Ie) { Checkbox Check = (Checkbox)Ie.getItemSelectable(); m_Lbl.setText( Check.getLabel()+"の状態:"+Check.getState() ); } } |
Windowsで言うラジオボタンの使い方です。
CheckboxGroupというクラスを作成し、これをCheckboxのコンストラクタに渡すことで、ラジオボタンにすることができます。
☆ チェックボックスグループのテスト。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest6 extends Applet implements ItemListener { Label m_Lbl; public void init() { m_Lbl = new Label("チェックボックスグループのテスト。"); add(m_Lbl); CheckboxGroup CheckG = new CheckboxGroup(); Checkbox Check1 = new Checkbox("テスト1",CheckG,false); Check1.addItemListener(this); add(Check1); Checkbox Check2 = new Checkbox("テスト2",CheckG,false); Check2.addItemListener(this); add(Check2); Checkbox Check3 = new Checkbox("テスト3",CheckG,false); Check3.addItemListener(this); add(Check3); } public void itemStateChanged(ItemEvent Ie) { Checkbox Check = (Checkbox)Ie.getItemSelectable(); m_Lbl.setText(Check.getLabel()+"の状態:"+Check.getState()); } } |
Windowsで言うコンボボックスのことです。
☆ チョイスの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest7 extends Applet implements ItemListener { Label m_Lbl; //状態の表示に使う。 public void init() { //空白を付け足さないと、文字が最後まで表示されません。 m_Lbl = new Label("チョイスの使い方テスト。" + " "); add(m_Lbl); Choice Ch = new Choice(); Ch.addItem("選択肢その1"); Ch.addItem("選択肢その2"); Ch.addItem("選択肢その3"); Ch.addItemListener(this); add(Ch); } public void itemStateChanged(ItemEvent Ie) { Choice Ch = (Choice)Ie.getItemSelectable(); m_Lbl.setText(Ch.getSelectedItem()+"が選択されています。"+ "("+Ch.getSelectedIndex()+"番目"+")"); } } |
Windowsで言うエディットボックスです。ただし、単一行のコントロールと、複数行のコントロールは同一のものではなく、分かれています。一行だけなのが、テキストフィールド、複数行有るのがテキストエリアです。
☆ テキストフィールドとテキストエリア
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest8 extends Applet implements ActionListener,TextListener { Label m_Lbl; TextArea m_Ta; TextField m_Tf; public void init() { m_Lbl = new Label("テキストフィールドとテキストエリアのテスト。"+ " "); add(m_Lbl); m_Ta = new TextArea(10,10); m_Ta.addTextListener(this); add(m_Ta); m_Tf = new TextField(10); m_Tf.addActionListener(this); m_Tf.addTextListener(this); add(m_Tf); } //ActionListenerの実装。 //TextFieldの中でエンターキーを押すとこのメソッドが反応します。 //TextAreaではエンターキーは改行になるので、キャッチできません。 public void actionPerformed(ActionEvent Ae) { if( Ae.getSource() == m_Tf ) { m_Lbl.setText("TextFieldのActionEvent : "+Ae.getActionCommand()); } } //TextListenerの実装。 public void textValueChanged(TextEvent Te) { if( Te.getSource() == m_Ta ) { m_Lbl.setText("(TextAreaのTextListener)TextAreaの内容:"+ m_Ta.getText()); } if( Te.getSource() == m_Tf ) { m_Lbl.setText("(TextFieldのTextListener)TextFiledの内容:"+ m_Tf.getText()); } } } |
Windowsで言うリストボックスです。今回は、複数選択可能なリストボックスをテストしてみます(無論単一選択リストボックスも可能です。コンストラクタでtrueかfalseを設定するだけです)
マウスで選択した場合と、エンターキーを押した場合の挙動が異なります。
☆ リストの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest9 extends Applet implements ActionListener,ItemListener { Label m_Lbl; List m_Lst; public void init() { m_Lbl = new Label("リストボックスのテスト。"+ " "); add(m_Lbl); m_Lst = new List(10,true); m_Lst.add("リストのテストその1"); m_Lst.add("リストのテストその2"); m_Lst.add("リストのテストその3"); m_Lst.add("リストのテストその4"); m_Lst.add("リストのテストその5"); m_Lst.addActionListener(this); m_Lst.addItemListener(this); add(m_Lst); } //ActionListenerの実装。 public void actionPerformed(ActionEvent Ae) { m_Lbl.setText("actionPerformed:"+Ae.getActionCommand()); } //ItemLisntenerの実装。 public void itemStateChanged(ItemEvent Ie) { List Lst = (List)Ie.getItemSelectable(); if( Lst == m_Lst ) { StringBuffer Str = new StringBuffer(); Str.append("選択されている項目のindex(itemStateChanged) : "); int[] arr = m_Lst.getSelectedIndexes(); for( int i=0 ; i<arr.length ; i++ ) Str.append(arr[i]+","); m_Lbl.setText(Str.toString()); } } } |
スクロールバーの使い方です。ここで扱うのは、コントロールとして配置するタイプのスクロールバーです。
☆ スクロールバーの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest10 extends Applet implements AdjustmentListener { Label m_Lbl; Scrollbar m_Sb; public void init() { m_Lbl = new Label("スクロールバーのテストです。"+ " "); add(m_Lbl); //コンストラクタの引数: //第一引数 : 水平(Scrollbar.HORIZONTAL)か // 垂直(Scrollbar.VERTICAL)か //第二引数 : 初期の位置。 //第三引数 : 幅 //第四引数 : 最小値 //第五引数 : 最大値 m_Sb = new Scrollbar(Scrollbar.HORIZONTAL,50,1,0,100); m_Sb.addAdjustmentListener(this); add(m_Sb); } public void adjustmentValueChanged(AdjustmentEvent Ae) { String Str = new String("N/A"); //スライダーを増加側に動かしたとき if( Ae.getAdjustmentType() == AdjustmentEvent.BLOCK_INCREMENT ) Str= new String("slider up"); //スライダーを減少側に動かしたとき if( Ae.getAdjustmentType() == AdjustmentEvent.BLOCK_DECREMENT ) Str= new String("slider down"); //スライダーをドラッグしたとき if( Ae.getAdjustmentType() == AdjustmentEvent.TRACK ) Str= new String("slider tracking"); //スクロールバーの端にある△ボタンを押したとき。 if( Ae.getAdjustmentType() == AdjustmentEvent.UNIT_INCREMENT ) Str= new String("slider button up"); //スクロールバーの端にある▽ボタンを押したとき。 if( Ae.getAdjustmentType() == AdjustmentEvent.UNIT_DECREMENT ) Str= new String("slider button down"); Scrollbar Sb = (Scrollbar)Ae.getAdjustable(); m_Lbl.setText("current pos : "+Sb.getValue()+ " / action : "+Str); } } |
レイアウトマネージャーを使わないと、addメソッドでコントロールを追加するたびに、単純に、横に並べられるだけでしたが、レイアウトマネージャーを使うと、好きな場所にコントロールを配置することができます(しかし、厳密に、座標で指定することはしていません)。
FlowLayoutは一つのコントロールにおいて、ほかのコントロールとの上下左右の間隔を指定することができます。また、コントロールを左・中央・右を基準に整列させたりできます。例では、中央を基準に整列させています。
☆ FlowLayoutの使い方。
import java.applet.*; import java.awt.*; public class AwtTest11 extends Applet { LayoutManager m_Lm; public void init() { int h_span = 10; int v_span = 10; //レイアウトマネージャーを作成し、 //このレイアウトマネージャーを使用することを設定。 m_Lm = new FlowLayout(FlowLayout.CENTER,h_span,v_span); setLayout(m_Lm); //テスト用にボタンを配置してみる。 Integer[] NumArray = new Integer[1]; for( int c=0 ; c<75 ; c++ ) { NumArray[0] = new Integer(c); String Str = new String( "Button "+String.format("%03d",NumArray) ); add(new Button(Str)); } } } |
ボーダーレイアウトの使い方です。東・西・南・北・真ん中、とちょっと変わった配置ができます。もちろん、五個コントロールを追加する必要が有るわけではありませんが、五個以下である必要が有るようです。
☆ BorderLayoutの使い方。
import java.applet.*; import java.awt.*; public class AwtTest12 extends Applet { BorderLayout m_Bl; public void init() { m_Bl = new BorderLayout(10,10); setLayout(m_Bl); add(new Button("その1(上)"),"North"); add(new Button("その2(下)"),"South"); add(new Button("その3(左)"),"West"); add(new Button("その4(右)"),"East"); add(new Button("その5(真ん中)"),"Center"); } } |
グリッドレイアウトは、GridLayoutクラスのコンストラクタに何列、何行という引数を指定することで、表のような状態になり、そこにコントロールを入れていくレイアウトです。
またgetInsetsメソッドをオーバーライドすることで、ウインドウの枠とコントロールの上下左右の間隔を指定できます。
☆ GridLayout
import java.applet.*; import java.awt.*; public class AwtTest13 extends Applet { GridLayout m_Gl; public void init() { m_Gl = new GridLayout(10,2,5,5); setLayout(m_Gl); for( int i =0 ; i < 20 ;i++ ) { String Str = new String("ボタン"+i); add(new Button(Str)); } } public Insets getInsets() { Insets Set = new Insets(50,50,50,50); return Set; } } |
パネルはレイアウトマネージャーにaddできます。またパネルにもボタンなどをaddできます。パネルにいくらかコントロールをまとめてaddし、それをレイアウトマネージャーにaddすることで、コントロールの配置にまとまりが出ます。
☆ Panelの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest14 extends Applet { GridLayout m_Layout; Panel m_Pnl; public void init() { m_Layout = new GridLayout(2,2,10,10); //ウインドウのレイアウト設定。 setLayout(m_Layout); int i; m_Pnl = new Panel(); //パネル内のレイアウト設定。 m_Pnl.setLayout(new FlowLayout(FlowLayout.CENTER,10,10)); for( i=0 ; i<8 ; i++ ) m_Pnl.add(new Button("ボタン"+i)); add(m_Pnl); //パネルの追加。 add(new Button("ボタン"+i++)); add(new Button("ボタン"+i++)); add(new Button("ボタン"+i++)); } } |
windowクラスの子クラスがFrameというクラスです。Frameクラスを継承し、そのクラスのインスタンスを作成することで、WindowsAPIで言うCreateWindowで作成したようなウインドウが作成できます。
Frameクラスについては「 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Frame.html 」を参照。
JavaAppletを実行してみる。(今回はウインドウを作成するコードが有るため、ブラウザがそれに対して警告を行なう場合があります。)
☆ Frameの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest15 extends Applet { AwtTest15_Frame m_Frame; public void init() { m_Frame = new AwtTest15_Frame("フレームだよん。"); m_Frame.setVisible(true); //ウインドウを表示する。 m_Frame.setSize(640,480); //ウインドウサイズの指定。 } } class AwtTest15_Frame extends Frame implements WindowListener { Label m_Lbl; //メッセージ表示用に使うラベル。 //以下は、WindowListenerインターフェイスの実装。 //ウインドウがアクティブになったときの処理。 public void windowActivated(WindowEvent We) { m_Lbl.setText("windowActivated"); } //ウインドウが閉じられたときの処理。 public void windowClosed(WindowEvent We) { m_Lbl.setText("windowClosed"); } //ウインドウを閉じるメッセージが来たときの処理。 public void windowClosing(WindowEvent We) { m_Lbl.setText("windowClosing"); dispose(); //ウインドウを消す。 } //ウインドウがアクティブではなくなったときの処理。 public void windowDeactivated(WindowEvent We) { m_Lbl.setText("windowDeactivated"); } //ウインドウが最小化されたときの処理。 public void windowDeiconified(WindowEvent We) { m_Lbl.setText("windowDeiconified"); } //ウインドウが最小化状態から復帰したときの処理。 public void windowIconified(WindowEvent We) { m_Lbl.setText("windowIconified"); } //ウインドウが作られたとき呼ばれる。 public void windowOpened(WindowEvent We) { m_Lbl.setText("windowOpened"); } public AwtTest15_Frame(String WindowTitle) { super(WindowTitle); //ウインドウのタイトル設定。 addWindowListener(this); m_Lbl = new Label("Frameのテスト。 "); add(m_Lbl); } } |
メニューバーの使い方です。
☆ メニューバーの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest16 extends Applet { AwtTest16_Frame m_Frame; public void init() { m_Frame = new AwtTest16_Frame(); m_Frame.setSize(640,480); m_Frame.setVisible(true); } } class AwtTest16_Frame extends Frame implements ActionListener,ItemListener,WindowListener { Label m_Lbl; MenuBar m_Menubar; Menu m_Menu1,m_Menu2; MenuItem m_Mi1,m_Mi2,m_Mi3; CheckboxMenuItem m_MChk1,m_MChk2,m_MChk3; public void actionPerformed(ActionEvent Ae) { if( Ae.getSource() == m_Mi1 ) m_Lbl.setText("メニュー1−1が押されました。"); if( Ae.getSource() == m_Mi2 ) m_Lbl.setText("メニュー1−2が押されました。"); if( Ae.getSource() == m_Mi3 ) m_Lbl.setText("メニュー1−3が押されました。"); } public void itemStateChanged(ItemEvent Ie) { CheckboxMenuItem Check = (CheckboxMenuItem)Ie.getSource(); if( Check == m_MChk1 ) m_Lbl.setText("メニュー2−1が選択されました。"); if( Check == m_MChk2 ) m_Lbl.setText("メニュー2−2が選択されました。"); if( Check == m_MChk3 ) m_Lbl.setText("メニュー2−3が選択されました。"); /* ちなみに、 チェックされているかされていないかは、 boolean Check.getState(); で調べる。 また、プログラム側からチェックした状態にしたい場合は Check.setState(true); とする。チェックして無い状態にするにはtrueをfalseにする。 */ } //ウインドウがアクティブになったときの処理。 public void windowActivated(WindowEvent We) { } //ウインドウが閉じられたときの処理。 public void windowClosed(WindowEvent We) { } //ウインドウを閉じるメッセージが来たときの処理。 public void windowClosing(WindowEvent We) { dispose(); //ウインドウを消す。 } //ウインドウがアクティブではなくなったときの処理。 public void windowDeactivated(WindowEvent We) { } //ウインドウが最小化されたときの処理。 public void windowDeiconified(WindowEvent We) { } //ウインドウが最小化状態から復帰したときの処理。 public void windowIconified(WindowEvent We) { } //ウインドウが作られたとき呼ばれる。 public void windowOpened(WindowEvent We) { } AwtTest16_Frame() { super("メニューのテストです。"); addWindowListener(this); m_Lbl = new Label("メニューのテスト。"); add(m_Lbl); //メニューバーの作成。 m_Menubar = new MenuBar(); setMenuBar(m_Menubar); //メニューの作成。 m_Menu1 = new Menu("メニュー項目その1"); m_Menubar.add(m_Menu1); //メニューの中の項目を作成。 m_Mi1 = new MenuItem("メニュー1−1"); m_Menu1.add(m_Mi1); m_Mi1.addActionListener(this); m_Mi2 = new MenuItem("メニュー1−2"); m_Menu1.add(m_Mi2); m_Mi2.addActionListener(this); m_Mi3 = new MenuItem("メニュー1−3"); m_Menu1.add(m_Mi3); m_Mi3.addActionListener(this); //メニューの作成(チェックボックスタイプ)。 m_Menu2 = new Menu("メニュー項目その2"); m_Menubar.add(m_Menu2); //メニューの中の項目を作成。 m_MChk1 = new CheckboxMenuItem("メニュー2−1"); m_Menu2.add(m_MChk1); m_MChk1.addItemListener(this); m_MChk2 = new CheckboxMenuItem("メニュー2−2"); m_Menu2.add(m_MChk2); m_MChk2.addItemListener(this); m_MChk3 = new CheckboxMenuItem("メニュー2−3"); m_Menu2.add(m_MChk3); m_MChk3.addItemListener(this); } } |
モードレス・モーダルダイアログがコンストラクタでの引数の指定で設定可能です。
☆ ダイアログの使い方。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AwtTest17 extends Applet { AwtTest17_Dialog m_Dlg; public void init() { m_Dlg = new AwtTest17_Dialog(null); } } class AwtTest17_Dialog extends Dialog { AwtTest17_Dialog(Frame Parent) { //親のコンストラクタの第三引数が //true or falseでモードレスがモーダルになる。 //trueだとモーダル、falseだとモードレスになる。 super(Parent,"モードレスダイアログのテストです。",false); //WindowListenerを設定する。 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent We) { dispose(); } }); //テストのため、ダイアログにコントロールを配置してみる。 setLayout(new GridLayout(5,5,10,10)); for( int i=0 ; i<25 ; i++ ) { add(new Button("ボタン"+i)); } setVisible(true); setSize(640,480); } //getInsetsメソッドをオーバーライドすることで //コントロールを配置する場所のspanを設定。 public Insets getInsets() { return new Insets(50,20,20,20); } } |
WindowsAPIで言う、GetOpenFileName・GetSaveFileName関数みたいなやつです。
☆ ファイルダイアログのテスト。
import java.applet.*; import java.awt.*; public class AwtTest18 extends Applet { Label m_Lbl; public void init() { m_Lbl = new Label("ファイル名前の取得ダイアログのテスト。"); add(m_Lbl); //FileDialog.LOADかFileDialog.SAVEの指定で、 //ダイアログのメッセージが、保存用or読み出し用かで変化します。 FileDialog Fd = new FileDialog((Frame)null, "ファイル名前の取得ダイアログ",FileDialog.LOAD); //モーダルダイアログの表示。 //ファイルのパスを取得したら制御が帰ってくる。 Fd.setVisible(true); //取得したファイルパスを表示する。 m_Lbl.setText("取得したパス: "+ Fd.getDirectory()+Fd.getFile()); } } |