ここではGUIコンポーネントのメニューバーについて説明する。
このメニューバーは、JMenuBerというクラス名である。
まず『File』『View』の2つのメニューバーを作る。
JMenuBarのインスタンスを生成しておいて、JFrameのsetJMenuBar()メソッド
のパラメータに渡すことにより、タイトルバーの真下にメニューバーを付ける事ができる。
これを元に作ると以下のプログラムになる。
import java.awt.*; import java.awt.event.*; import javax.swing.*; class JMenuBarTest extends JFrame implements ActionListener { JMenuBarTest() { JMenuBar menuBar = new JMenuBar(); JMenu menuFile = new JMenu("File"); JMenu menuView = new JMenu("View"); menuFile.setMnemonic('F'); menuView.setMnemonic('V'); getRootPane().setJMenuBar(menuBar); menuBar.add(menuFile); menuBar.add(menuView); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("JMenuBarTest"); setSize(250, 200); setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("[" + e.getActionCommand() + "]"); } public static void main(String[] args) { new JMenuBarTest(); } }
これでメニューバーを作成した。次はWindowsと同じようにメニューバーにメニューをいれてみる。
JMenuに対して、メニュー項目(JMenuItem)を渡すことにより、プルダウンメニューを構成できる。
import java.awt.*; import java.awt.event.*; import javax.swing.*; class JMenuBarTest extends JFrame implements ActionListener { JMenuBarTest() { JMenuBar menuBar = new JMenuBar(); JMenu menuFile = new JMenu("File"); JMenuItem menuOpen = new JMenuItem("Open"); JMenuItem menuExit = new JMenuItem("Exit"); JMenu menuView = new JMenu("View"); JMenuItem menuTool = new JMenuItem("Tool Bar"); JMenu menuSize = new JMenu("Size"); menuFile.setMnemonic('F'); menuOpen.setMnemonic('O'); menuExit.setMnemonic('x'); menuView.setMnemonic('V'); menuTool.setMnemonic('T'); menuSize.setMnemonic('S'); menuOpen.addActionListener(this); menuExit.addActionListener(this); menuTool.addActionListener(this); getRootPane().setJMenuBar(menuBar); menuBar.add(menuFile); menuFile.add(menuOpen); menuFile.add(menuExit); menuBar.add(menuView); menuView.add(menuTool); menuView.add(menuSize); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("JMenuBarTest"); setSize(250, 200); setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("[" + e.getActionCommand() + "]"); } public static void main(String[] args) { new JMenuBarTest(); } }
ここではポップアップメニューのイベント処理をやっていく。ポップアップメニューは
マウスの右ボタンをクリックしたときにでてくるメニューである。
したがってマウスイベントの処理にも関係してきます。マウスイベント処理については
後ほどやりますので今回はこういうものだと覚えておく。
まずはポップアップメニューを作る。
import java.awt.*; import java.awt.event.*; import javax.swing.*; class JPopupMenuTest extends JFrame implements ActionListener, MouseListener { JPopupMenu popup = new JPopupMenu(); JPopupMenuTest() { JMenuItem menuA = new JMenuItem("menuA"); JMenuItem menuB = new JMenuItem("menuB"); menuA.addActionListener(this); menuB.addActionListener(this); popup.add(menuA); popup.add(menuB); getContentPane().addMouseListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("JPopupMenuTest"); setSize(200, 100); setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println(e.getActionCommand()); } public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public static void main(String[] args) { new JPopupMenuTest(); } }