### AWT

[戻る] [前に] [次に]

#### ■ AWTとは

AWT（Abstract Windowing Tools）は、Java で GUIアプリケーションを作成するためのクラスライブラリです。現在では Swing もよく利用されていますが、Swing よりも軽い GUIアプリケーションを作成することが可能です。

#### ■ フレーム（Frame）

##### 【サンプル】

##### 【説明】

フレーム（Frame）はウインドウやダイアログの基本となるものです。

##### 【ソース】

§FrameTest.java

    import java.awt.*;

    public class FrameTest extends Frame {
        public static void main(String [] args) {
            new FrameTest();
        }
        FrameTest() {
            super("FrameTest");
            setSize(200, 100);
            show();
        }
    }

- java.awt.* をインポートします。
- アプリケーションを Frame クラスのサブクラスとして実装します。
- super() で親クラスのコンストラクタを呼び出します。
- setSize() でフレームのサイズを指定します。
- show() でフレームを表示します。

##### 【実行方法】

FrameTest.java をコンパイルして実行してみましょう。200×100 の大きさのウィンドウ（フレーム）が表示されれば成功です。

    C:\java>javac FrameTest.java
    C:\java>java FrameTest

ウィンドウを閉じる機能が実装されていないので、コマンドプロンプトで Ctrl-C を入力して終了させてください。

    C:\java>java FrameTest
    Ctrl-C    ← Ctrlキーを押しながらCキーを押す

#### ■ ボタン（Button）

##### 【サンプル】

##### 【説明】

ボタン（Button）を配置します。

##### 【ソース】

§ButtonTest.java

    import java.awt.*;

    public class ButtonTest extends Frame {
        public static void main(String [] args) {
            new ButtonTest();
        }
        ButtonTest() {
            super("ButtonTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            Button b1 = new Button("OK");
            add(b1);
            show();
        }
    }

##### 【備考】

- ボタンが押されるのを監視する → ActionListener

#### ■ ラベル（Label）

##### 【サンプル】

##### 【説明】

ラベル（Label）を配置します。

##### 【ソース】

§LabelTest.java

    import java.awt.*;

    public class LabelTest extends Frame {
        public static void main(String [] args) {
            new LabelTest();
        }
        LabelTest() {
            super("LabelTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            Label l1 = new Label("HelloWorld!!");
            add(l1);
            show();
        }
    }

#### ■ テキストフィールド（TextField）

##### 【サンプル】

##### 【説明】

テキストフィールド（TextField）を配置します。

##### 【ソース】

§TextFieldTest.java

    import java.awt.*;

    public class TextFieldTest extends Frame {
        public static void main(String [] args) {
            new TextFieldTest();
        }
        TextFieldTest() {
            super("TextFieldTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            TextField t1 = new TextField("Hello World!!");
            add(t1);
            show();
        }
    }

##### 【備考】

- テキストの内容を参照する → textField.getText()
- テキストの内容を設定する → textField.setText()

#### ■ テキストエリア（TextArea）

##### 【サンプル】

##### 【説明】

テキストエリア（TextArea）を配置します。

##### 【ソース】

§TextAreaTest.java

    import java.awt.*;

    public class TextAreaTest extends Frame {
        public static void main(String [] args) {
            new TextAreaTest();
        }
        TextAreaTest() {
            super("TextAreaTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            TextArea b1 = new TextArea("Hello World!!", 3, 20);
            add(b1);
            show();
        }
    }

##### 【備考】

- テキストの内容を参照する → textArea.getText()
- テキストの内容を設定する → textArea.setText()

#### ■ チェックボックス（Checkbox）

##### 【サンプル】

##### 【説明】

チェックボックス（Checkbox）を配置します。

##### 【ソース】

§CheckboxTest.java

    import java.awt.*;

    public class CheckboxTest extends Frame {
        public static void main(String [] args) {
            new CheckboxTest();
        }
        CheckboxTest() {
            super("CheckboxTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            Checkbox c1 = new Checkbox("OK?");
            add(c1);
            show();
        }
    }

##### 【備考】

- チェックボックスのオンオフを監視する → ItemListener、ActionListener
- 現在の状態を調べる → checkbox.getState()
- オン・オフを設定する → checkbox.setState(true)

#### ■ チョイス（Choice）

##### 【サンプル】

##### 【説明】

チョイス（Choice）を配置します。

##### 【ソース】

§ChoiceTest.java

    import java.awt.*;

    public class ChoiceTest extends Frame {
        public static void main(String [] args) {
            new ChoiceTest();
        }
        ChoiceTest() {
            super("ChoiceTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            Choice c1 = new Choice();
            c1.add("ChoiceA");
            c1.add("ChoiceB");
            c1.add("ChoiceC");
            add(c1);
            show();
        }
    }

##### 【備考】

- 変更を監視する → ItemListener の延長で itemevent.getItem()
- 選択中の項目名を得る → choice.getSelectedItem()
- 選択中の項目インデックスを得る → choice.getSelectedIndex()
- n番目の項目名を得る → choice.getItem()
- 項目数を得る → choice.getItemCount()
- 項目を追加する → choice.add()
- 項目を削除する → choice.remove()

#### ■ リスト（List）

##### 【サンプル】

##### 【説明】

リスト（List）を配置します。

##### 【ソース】

§ListTest.java

    import java.awt.*;

    public class ListTest extends Frame {
        public static void main(String [] args) {
            new ListTest();
        }
        ListTest() {
            super("ListTest");
            setSize(200, 100);
            setLayout(new FlowLayout());
            List list1 = new List();
            list1.add("ListA");
            list1.add("ListB");
            add(list1);
            show();
        }
    }

##### 【備考】

- 項目の選択状態を監視する → ItemListener で list.getSelectedItem()
- 項目のダブルクリックを監視する → ActionListener で list.getSelectedItem()
- 選択中の項目名を得る → list.getSelectedItem()
- 選択中の項目インデックスを得る → list.getSelectedIndex()
- n番目の項目名を得る → list.getItem()
- 項目数を得る → list.getItemCount()
- 項目を追加する → list.add()
- 項目を削除する → list.remove()

#### ■ スクロールバー（Scrollbar）

##### 【サンプル】

##### 【説明】

スクロールバー（Scrollbar）は、スクロールバーを表示します。スクロールバーの動きに従って部品を自動的にスクロールさせるには、ScrollPane を利用します。

##### 【ソース】

§ScrollbarTest.java

    import java.awt.*;

    public class ScrollbarTest extends Frame {
        public static void main(String [] args) {
            new ScrollbarTest();
        }
        ScrollbarTest() {
            super("ScrollbarTest");
            setSize(200, 100);
            setLayout(new BorderLayout());
            Scrollbar sb1 = new Scrollbar(Scrollbar.HORIZONTAL);
            add(sb1, BorderLayout.SOUTH);
            show();
        }
    }

##### 【備考】

- スクロールを監視する → AdjustmentListener
- 現在のスクロール位置を得る → scrollbar.getValue()

#### ■ キャンバス（Canvas）

##### 【サンプル】

##### 【説明】

キャンバス（Canvas）は、線、丸、矩形などの図形を描画する際に用いられる部品です。通常、Canvas クラスのサブクラスを定義して使用します。paint() は、show() や repaint() が呼ばれたときや、隠れていたウィンドウが表に表示されるときなどに自動的に呼び出されるメソッドです。

##### 【ソース】

§CanvasTest.java

    import java.awt.*;

    class CanvasTest extends Frame {
        public static void main(String[] args) {
            new CanvasTest();
        }
        CanvasTest() {
            super("CanvasTest");
            setSize(200, 100);
            setLayout(new BorderLayout());
            MyCanvas mc1 = new MyCanvas();
            add(mc1, BorderLayout.CENTER);
            show();
        }
    }

    class MyCanvas extends Canvas {
        public void paint(Graphics g) {
            g.drawLine(10, 10, 120, 40);
        }
    }

##### 【備考】

- マウスの動きを監視する → MouseListener、MouseMotionListener
- 描画する → paint()
- 再描画を指示する → repaint()

#### ■ メニュー（Menu）

##### 【サンプル】

##### 【説明】

メニューは、主に下記の4種類のオブジェクトから構成されます。

クラス | 説明
--- | ---
MenuBar | メニューバー。
Menu | メニュー。子アイテムを持つメニュー項目。
MenuItem | メニューアイテム。子アイテムを持たないメニュー項目。
CheckboxMenuItem | チェックタイプのメニューアイテム。

実行例では、下記の階層構造をもつメニューバーを実装しています。

    ■ MenuBar
    ├□ File
    │├○ Open Ctrl+O
    │└○ Exit
    └□ View
    　├◎ Status Bar
    　└□ Size
    　　├○ Large
    　　└○ Small
    ■ MenuBar
    □ Menu
    ○ MenuItem
    ◎ CheckboxMenuItem

##### 【ソース】

§MenuTest.java

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

    class MenuTest extends Frame implements ActionListener, ItemListener {
        public static void main(String[] args) {
            new MenuTest();
        }
        MenuTest() {
            setTitle("MenuTest");
            setSize(200, 120);
            setLayout(new FlowLayout());
            MenuBar menuBar = new MenuBar();
            setMenuBar(menuBar);
            // [File]
            Menu menuFile = new Menu("File");
            menuFile.addActionListener(this);
            menuBar.add(menuFile);
            // [File]-[Open]
            MenuItem menuOpen = new MenuItem("Open...", new MenuShortcut('O'));
            menuFile.add(menuOpen);
            // [File]-[----]
            menuFile.addSeparator();
            // [File]-[Exit]
            MenuItem menuExit = new MenuItem("Exit");
            menuFile.add(menuExit);
            // [View]
            Menu menuView = new Menu("View");
            menuView.addActionListener(this);
            menuBar.add(menuView);
            // [View]-[Status Bar]
            CheckboxMenuItem menuStatusBar = new CheckboxMenuItem("Status Bar");
            menuStatusBar.addItemListener(this);
            menuView.add(menuStatusBar);
            // [View]-[Size]
            Menu menuSize = new Menu("Size");
            menuSize.addActionListener(this);
            menuView.add(menuSize);
            // [View]-[Size]-[Large]
            MenuItem menuSizeLarge = new MenuItem("Large");
            menuSize.add(menuSizeLarge);
            // [View]-[Size]-[Small]
            MenuItem menuSizeSmall = new MenuItem("Small");
            menuSize.add(menuSizeSmall);
            show();
        }
        public void actionPerformed(ActionEvent e) {
            System.out.println(e.getActionCommand());
        }
        public void itemStateChanged(ItemEvent e) {
            CheckboxMenuItem menu = (CheckboxMenuItem)e.getSource();
            if (menu.getState()) {
                System.out.println(menu.getLabel() + " SELECTED");
            } else {
                System.out.println(menu.getLabel() + " DESELECTED");
            }
        }
    }

##### 【備考】

- メニューバー → MenuBar
- 子メニューを持つメニュー → Menu
- 子要素を持たないメニュー → MenuItem または CheckboxMenuItem
- MenuItem の実行を監視する → 親の Menu オブジェクトに ActionListener
- CheckboxMenuItem の実行を監視する → ItemListener
- セパレータを追加する → menu.addSeparator()
- MenuItem を識別する → menuitem.getActionCommand()
- CheckboxMenuItem を識別する → checkboxmenuitem.getLabel()

#### ■ ダイアログ（Dialog）

##### 【サンプル】

##### 【説明】

ダイアログ を表示するには、Dialog クラスのサブクラスを作成してダイアログの名前や機能を定義し、これを show() メソッドで表示します。ダイアログの作り方や、作法、ダイアログ上への部品の配置方法はフレームと同様です。

##### 【ソース】

§DialogTest.java

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

    class DialogTest extends Frame {
        public static void main(String[] args) {
            new DialogTest();
        }
        DialogTest() {
            super("DialogTest");
            setSize(200, 100);
            MyDialog dlg = new MyDialog(this);
            dlg.show();
            show();
        }
    }

    class MyDialog extends Dialog implements ActionListener {
        MyDialog(Frame owner) {
            super(owner);
            setLayout(new FlowLayout());
            Button b1 = new Button("OK");
            b1.addActionListener(this);
            add(b1);
            setTitle("MyDialog");
            setSize(80, 80);
        }
        public void actionPerformed(ActionEvent e) {
            hide();
        }
    }

http://www.tohoho-web.com/java/awt.htm
初版：2004年6月26日、最終更新：2004年6月26日
[戻る] [前に] [次に]