JAVA入門後期⑨ JAVAのSwingのメニュー処理
メニュー処理とは GUIにおけるメニューは、 ・通常フレーム上部にあるメニューバー ・ボタンイメージを並べて配置し、それぞれのボタンにイベン ・通常フレーム上部にあるメニューバー ・ボタンイメージを並べて配置し、それぞれのボタンにイベン トリスナーを登録するツールバー(移動可能であり、又、コ ンポーネントの一部として扱う) ・マウスの右ボタンクリック等によって表示されるポップアッ プメニュー(ボタンクリックで表示されるようにマウスイベン トリスナーを登録しておく必要がある) 等がある。 又、各メニュー項目(メニューアイテムやボタン)には、イベント リスナーを登録する必要がある。
メニューバー 1.メニューバーは三階層 ●第一階層 メニューの並びを表示する JMenuBarクラス ●第二階層 メニューの並びを表示する 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クラス ●第二階層 メニューの並びを表示する 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クラス ●第二階層 メニューの並びを表示する 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のようにフレームへの登録は必要な // い // 省略 }
実行結果 メニューバー ツールバー ポップアップメニュー