JAVA入門

JAVA入門後期⑨
JAVAのSwingのメニュー処理
メニュー処理とは
GUIにおけるメニューは、
・通常フレーム上部にあるメニューバー
・ボタンイメージを並べて配置し、それぞれのボタンにイベン
トリスナーを登録するツールバー(移動可能であり、又、コ
ンポーネントの一部として扱う)
・マウスの右ボタンクリック等によって表示されるポップアッ
プメニュー(ボタンクリックで表示されるようにマウスイベン
トリスナーを登録しておく必要がある)
等がある。
又、各メニュー項目(メニューアイテムやボタン)には、イベント
リスナーを登録する必要がある。
メニューバー
1.メニューバーは三階層
●第一階層
メニューの並びを表示する
JMenuBarクラス
●第二階層
メニューバー内に表示されるメニュー
JMenuクラス
●第三階層
個々のメニュー項目
JMenuItemクラス
JCheckBoxMenuItemクラス 等
JMenuは入れ子(JMenuの下位階層に再びJMenuがある状態)
にも出来る。
又、JMenuBarにJMenuItemを直接登録することも可能。
メニューバーの実装例
import java.awt.*;
import javax.swing.*;
public class HelloSwing extends JFrame {
// 省略
// コンストラクター
HelloSwing(String title) {
// 省略
// JMenuBarのインスタンス化
JMenuBar menubar = new JMenuBar();
// JMenuのインスタンス化
JMenu file = new JMenu("ファイル");
JMenu view = new JMenu("表示");
メニューバーの実装例
// JMenuItemのインスタンス化
JMenuItem open = new JMenuItem("開く");
JMenuItem save = new JMenuItem("保存");
JMenuItem exit = new JMenuItem("終了");
JCheckBoxMenuItem tool = new JCheckBoxMenuItem("
ツールバー", true);
JMenu size = new JMenu("フォントサイズ");
JMenuItem large = new JMenuItem("大きく");
JMenuItem small = new JMenuItem("小さく");
メニューバーの実装例
// イベントリスナーを登録
OpenListener ol = new OpenListener(frame, textArea,
chooser);
open.addActionListener(ol);
SaveListener sl = new SaveListener(frame, textArea,
chooser);
save.addActionListener(sl);
ExitListener el = new ExitListener();
exit.addActionListener(el);
// 他のイベントリスナー("ツールバー", "大きく", "小さく")
// は省略している
メニューバーの実装例
// JMenuItemを追加
file.add(open);
file.add(save);
file.addSeparator(); // セパレーター
file.add(exit);
view.add(tool);
size.add(large);
size.add(small);
view.add(size); // JMenuにJMenuを追加することも可能
メニューバーの実装例
// JMenuを配置
menubar.add(file);
menubar.add(view);
// JMenuBarをフレームに追加
// JMenuBarはsetJMenuBar()メッソドを使ってframeに
// 追加する
frame.setJMenuBar(menubar);
// 省略
}
}
ツールバー
1.ツールバーは二階層
●第一階層
メニューの並びを表示する
JToolBarクラス
●第二階層
ツールバー内に表示されるボタンイメージ
JButtonクラス
ツールバーの実装例
import java.awt.*;
import javax.swing.*;
public class HelloSwing extends JFrame {
// 省略
// コンストラクター
HelloSwing(String title) {
// 省略
// JToolBarのインスタンス化
JToolBar toolbar = new JToolBar();
toolbar.setFloatable(false);
// JTooBar用JButtonのインスタンス化
JButton openButton = new JButton(new
ImageIcon("open.png"));
JButton saveButton = new JButton(new ImageIcon("save.png"));
ツールバーの実装例
// イベントリスナーを登録
OpenListener ol = new OpenListener(frame, textArea,
chooser);
SaveListener sl = new SaveListener(frame, textArea,
chooser);
openButton.addActionListener(ol);
saveButton.addActionListener(sl);
ツールバーの実装例
// JButtonを配置
toolbar.add(openButton);
toolbar.add(saveButton);
// JToolBarをフレームに追加
// JToolBarはadd()メッソドを使ってコンテントペインに
// 追加する
con.add(toolbar, BorderLayout.NORTH);
// 省略
}
}
ポップアップメニュー
1.ポップアップメニュー三階層
●第一階層
メニューの並びを表示する
JPopupMenuクラス
●第二階層
ポップアップメニュー内に表示されるメニュー
JMenuクラス
●第三階層
個々のメニュー項目
JMenuItemクラス
JCheckBoxMenuItemクラス 等
JMenuは入れ子(JMenuの下位階層に再びJMenuがある状態)
にも出来る。
又、JPopupMenuにJMenuItemを直接登録することも可能。
ポップアップメニューの実装例
import java.awt.*;
import javax.swing.*;
public class HelloSwing extends JFrame {
// 省略
// コンストラクター
HelloSwing(String title) {
// 省略
// JPopupMenuのインスタンス化
JPopupMenu popup = new JPopupMenu();
// JMenuは使用せず
// JMenuItemのインスタンス化
JMenuItem openPopup = new JMenuItem("開く");
JMenuItem savePopup = new JMenuItem("保存");
ポップアップメニューの実装例
// イベントリスナーを登録
OpenListener ol = new OpenListener(frame, textArea,
chooser);
SaveListener sl = new SaveListener(frame, textArea,
chooser);
openPopup.addActionListener(ol);
savePopup.addActionListener(sl);
// マウスの右クリックでポップアップメニューが表示されるよ
// うにマウスイベントも登録する
MouseEventHandler meh = new MouseEventHandler(frame,
popup);
con.addMouseListener(meh);
ポップアップメニューの実装例
// JMenuItemを追加
popup.add(openPopup);
popup.add(savePopup);
// JMenuBar, JToolBarのようにフレームへの登録は必要な
// い
// 省略
}
}
実行結果
ツールバー
メニューバー
ポップアップメニュー