Java の AWT(Abstract Window Toolkit)を使った GUI アプリケーションを Mac OS 8.1 で作っています。Mac OS 8.1 では、Java のバージョンは JDK 1.1.3 になります。
このコーナーを始める前に Java Essential と Java AWT を見ておいた方が良いでしょう。
なお Java はファイル名とクラス名を同じにしなければならないので、このコーナーでは、ファイル名は Hello.java、クラス名は Hello と決めています。AWT のメニューは次のような構成になっています。
メニューバー | MenuBar |
メニューバーに表示される各メニュー | Menu |
各メニューをクリックした時に表示されるメニューアイテム | MenuItem |
セパレーター | addSeparator メソッドで追加 |
イベントリスナー | ActionListener |
イベントリスナーメソッド | actionPerformed(ActionEvent e) |
import java.awt.*;
import java.awt.event.*;
class Hello extends WindowAdapter implements ActionListener {
static Label label;
public static void main(String[] args) {
Frame frame = new Frame("Menu");
frame.setSize(200, 100);
frame.addWindowListener(new Hello());
label = new Label("Label");
frame.add(label);
// MenuBar
MenuBar menuBar = new MenuBar();
frame.setMenuBar(menuBar);
// FileMenu
Menu menuFile = new Menu("File");
menuBar.add(menuFile);
menuFile.addActionListener(new Hello());
MenuItem menuNew = new MenuItem("New", new MenuShortcut('N'));
MenuItem menuOpen = new MenuItem("Open", new MenuShortcut('O'));
MenuItem menuSave = new MenuItem("Save", new MenuShortcut('S'));
MenuItem menuQuit = new MenuItem("Quit", new MenuShortcut('Q'));
menuFile.add(menuNew);
menuFile.add(menuOpen);
menuFile.add(menuSave);
menuFile.addSeparator();
menuFile.add(menuQuit);
// EditMenu
Menu menuEdit = new Menu("Edit");
menuBar.add(menuEdit);
menuEdit.addActionListener(new Hello());
MenuItem menuUndo = new MenuItem("Undo", new MenuShortcut('U'));
MenuItem menuRedo = new MenuItem("Redo", new MenuShortcut('R'));
MenuItem menuCut = new MenuItem("Cut", new MenuShortcut('X'));
MenuItem menuCopy = new MenuItem("Copy", new MenuShortcut('C'));
MenuItem menuPast = new MenuItem("Paste",new MenuShortcut('V'));
menuEdit.add(menuUndo);
menuEdit.add(menuRedo);
menuEdit.addSeparator();
menuEdit.add(menuCut);
menuEdit.add(menuCopy);
menuEdit.add(menuPast);
frame.show();
}
public void windowClosing (WindowEvent e) {System.exit(0);}
public void actionPerformed(ActionEvent e) {
label.setText(e.getActionCommand());
}
}
Hello.java を javac でコンパイル(Do Javac)し、作成された Hello.class を JBindery でアプリケーションとして保存します。そして作成されたアプリケーションをダブルクリックで起動します。
AWT はチェックメニューもサポートしています。構成は次のとおりです。
チェックメニューアイテム | CheckboxMenuItem |
イベントリスナー | ItemListener |
イベントリスナーメソッド | itemStateChanged(ItemEvent e) |
import java.awt.*;
import java.awt.event.*;
class Hello extends WindowAdapter implements ItemListener {
static Label label;
public static void main(String[] args) {
Frame frame = new Frame("CheckboxMenuItem");
frame.setSize(200, 100);
frame.addWindowListener(new Hello());
label = new Label("Label");
frame.add(label);
// MenuBar
MenuBar menuBar = new MenuBar();
frame.setMenuBar(menuBar);
// CheckboxMenuItem
Menu menuCheck = new Menu("Check");
menuBar.add(menuCheck);
CheckboxMenuItem checkboxMenu = new CheckboxMenuItem("Check");
menuCheck.add(checkboxMenu);
checkboxMenu.addItemListener(new Hello());
frame.show();
}
public void windowClosing (WindowEvent e) {System.exit(0);}
public void itemStateChanged(ItemEvent e) {
if (((CheckboxMenuItem)e.getSource()).getState()) {
label.setText("Checked");
} else {
label.setText("Unchecked");
}
}
}
Menu を、Menu に追加してサブメニューを作ることもできます。
import java.awt.*;
import java.awt.event.*;
class Hello extends WindowAdapter implements ActionListener {
static Label label;
public static void main(String[] args) {
Frame frame = new Frame("CheckboxMenuItem");
frame.setSize(200, 100);
label = new Label("Label");
frame.add(label);
// MenuBar
MenuBar menuBar = new MenuBar();
frame.setMenuBar(menuBar);
// Graphics Menu
Menu menuGraphics = new Menu("Graphics");
menuBar.add(menuGraphics);
Menu menuShape = new Menu("Shape");
Menu menuColor = new Menu("Color");
menuGraphics.add(menuShape);
menuGraphics.add(menuColor);
MenuItem menuCircle = new MenuItem("Circle");
MenuItem menuRectangle = new MenuItem("Rectangle");
MenuItem menuTriangle = new MenuItem("Triangle");
MenuItem menuRed = new MenuItem("Red");
MenuItem menuGreen = new MenuItem("Green");
MenuItem menuBlue = new MenuItem("Blue");
menuShape.add(menuCircle);
menuShape.add(menuRectangle);
menuShape.add(menuTriangle);
menuColor.add(menuRed);
menuColor.add(menuGreen);
menuColor.add(menuBlue);
menuGraphics.addSeparator();
menuGraphics.add(new MenuItem("Erase"));
// EventListener
Hello hello = new Hello();
frame .addWindowListener(hello);
menuShape .addActionListener(hello);
menuColor .addActionListener(hello);
menuGraphics.addActionListener(hello);
frame.show();
}
public void windowClosing (WindowEvent e) {System.exit(0);}
public void actionPerformed(ActionEvent e) {
label.setText(e.getActionCommand());
}
}