12. Frame |
Frame を使うとアプリケーションプログラムからウインドウや GUI が使えるようになります。
(1) Frame の基本的な使い方 |
Frame f = new Frame( );
Frame f = new Frame(String title);
2つ目のコンストラクタを使うとウインドウにタイトルを付けることができます。タイトルは Frame クラスのメソッドで設定することもできます。これで Frame ができますが、その次に大きさを設定しなければいけません。
Frame の大きさを設定するには Component クラスのメソッドを使います。
setSize(int width, int height)
Frame が出来たらこれはコンテナの1つですから、今までのアプレットと同じようにレイアウトを設定して、コンポーネントを作成して追加します。
Frame を作ってコンポーネントを追加したら最後に Frame を表示させます。これも Component クラスのメソッドを使い、
setVisible(boolean visible)
このメソッドの引数を true にしてフレームを表示します。引数を false にすれば Frame が表示されなくなります。もうその Frame を使わない場合は dispose( ) メソッドで資源を解放します。
FrameTest.java
// FrameTest.java import java.awt.*; import java.awt.event.*; public class FrameTest implements ActionListener { Frame f; Button ok,close; public FrameTest() { // フレーム作成 f = new Frame("FrameTest"); // サイズ設定 f.setSize(200,100); // レイアウト設定 f.setLayout(new FlowLayout()); // コンポーネント追加 ok = new Button("OK"); close = new Button("Close"); f.add(ok); f.add(close); // リスナ登録 close.addActionListener(this); // フレーム表示 f.setVisible(true); } public void actionPerformed(ActionEvent e) { // Closeボタンが押された時 if ( e.getSource()==close ) { // フレームが使っていた資源を解放 f.dispose(); // インタプリタ終了 System.exit(0); } } public static void main(String args[]) { FrameTest obj = new FrameTest(); } } |
C:\java_test>java FrameTest |
(2) WindowEvent |
void windowActivated(WindowEvent e)
ウィンドウがアクティブになったとき
void windowClosed(WindowEvent e)
ウィンドウがクローズされたとき
void windowClosing(WindowEvent e)
ウィンドウを閉じようとしたとき
void windowDeactivated(WindowEvent e)
ウィンドウがアクティブではなくなったとき
void windowDeiconified(WindowEvent e)
ウィンドウが最小化された状態から通常の状態に戻ったとき
void windowIconified(WindowEvent e)
ウィンドウが最小化された状態になったとき
void windowOpened(WindowEvent e)
ウィンドウが最初に可視になったとき
これらはインタフェース内に定義されているメソッドなので、windowClosing( ) 以外は必要ないという場合でも、何も処理をしないようにしてオーバーライドします。
リスナを登録するメソッドは Frame クラスのスーパークラスの Window クラスのメソッドで
void addWindowListener(WindowListener listner)
// FrameTest2.java import java.awt.*; import java.awt.event.*; public class FrameTest2 implements WindowListener { Frame f; public FrameTest2() { // フレーム作成 f = new Frame("FrameTest"); // サイズ設定 f.setSize(200,100); // リスナ登録 f.addWindowListener(this); // フレーム表示 f.setVisible(true); } // ウインドウを閉じるとき public void windowClosing(WindowEvent e) { System.exit(0); } public void windowActivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowDeactivated(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { } public static void main(String args[]) { FrameTest2 obj = new FrameTest2(); } } |
C:\java_test>java FrameTest2 |
(3) Adapter クラス |
class MyWindowHandler extends WindowAdapter { void windowClosing(WindowEvent e) { ... } } class MyFrame { MyFrame() { Frame f = new Frame(); // リスナ登録 f.addWindowListener(new MyWindowHandler()); . . . } } |