AWT(Abstract Windowing Tools)は、Java で GUIアプリケーションを作成するためのクラスライブラリです。現在では Swing もよく利用されていますが、Swing よりも軽い GUIアプリケーションを作成することが可能です。
フレーム(Frame)はウインドウやダイアログの基本となるものです。
import java.awt.*; public class FrameTest extends Frame { public static void main(String [] args) { new FrameTest(); } FrameTest() { super("FrameTest"); setSize(200, 100); 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)を配置します。
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(); } }
ラベル(Label)を配置します。
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)を配置します。
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(); } }
テキストエリア(TextArea)を配置します。
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(); } }
チェックボックス(Checkbox)を配置します。
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(); } }
チョイス(Choice)を配置します。
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(); } }
リスト(List)を配置します。
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(); } }
スクロールバー(Scrollbar)は、スクロールバーを表示します。スクロールバーの動きに従って部品を自動的にスクロールさせるには、ScrollPane を利用します。
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(); } }
キャンバス(Canvas)は、線、丸、矩形などの図形を描画する際に用いられる部品です。通常、Canvas クラスのサブクラスを定義して使用します。paint() は、show() や repaint() が呼ばれたときや、隠れていたウィンドウが表に表示されるときなどに自動的に呼び出されるメソッドです。
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); } }
メニューは、主に下記の4種類のオブジェクトから構成されます。
クラス | 説明 |
---|---|
MenuBar | メニューバー。 |
Menu | メニュー。子アイテムを持つメニュー項目。 |
MenuItem | メニューアイテム。子アイテムを持たないメニュー項目。 |
CheckboxMenuItem | チェックタイプのメニューアイテム。 |
実行例では、下記の階層構造をもつメニューバーを実装しています。
■ MenuBar ├□ File │├○ Open Ctrl+O │└○ Exit └□ View ├◎ Status Bar └□ Size ├○ Large └○ Small |
■ MenuBar □ Menu ○ MenuItem ◎ CheckboxMenuItem |
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"); } } }
ダイアログ を表示するには、Dialog クラスのサブクラスを作成してダイアログの名前や機能を定義し、これを show() メソッドで表示します。ダイアログの作り方や、作法、ダイアログ上への部品の配置方法はフレームと同様です。
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(); } }