メニューアイテムを追加する
ポップアップメニューを作成したらその中に実際に表示されるメニューアイテムを追加する必要があります。JPopupMenuクラスで用意されている「add」メソッドを使います。
public JMenuItem add(JMenuItem menuItem)
指定されたメニュー項目をメニューの末尾に追加します。 パラメータ: menuItem - 追加する JMenuitem 戻り値: 追加された JMenuItem
引数にはメニューアイテムを表すJMenuItemクラスのオブジェクトを指定します。JMenuItemクラスについては『JMenuクラス,JMenuBarクラス,JMenuItemクラス』を参照して下さい。
複数のメニューアイテムを追加する場合には「add」メソッドを繰り返し使って下さい。追加された順番に従ってメニューアイテムは上から順に表示されます。
実際の使い方は次のようになります。
JPopupMenu popup = new JPopupMenu(); JMenuItem menuitem1 = new JMenuItem("進む"); JMenuItem menuitem2 = new JMenuItem("戻る"); popup.add(menuitem1); popup.add(menuitem2); popup.show(label, 10, 10);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*; import java.awt.BorderLayout; import java.awt.Font; import java.awt.Color; import java.awt.event.*; public class JPopupMenuTest3 extends JFrame implements MouseListener{ JPopupMenu popup; public static void main(String[] args){ JPopupMenuTest3 frame = new JPopupMenuTest3(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } JPopupMenuTest3(){ JButton button = new JButton("button"); JPanel p = new JPanel(); p.addMouseListener(this); p.add(button); popup = new JPopupMenu(); ImageIcon icon = new ImageIcon("./img/mem10.gif"); JMenuItem updateMenuItem = new JMenuItem("最新の情報に更新(U)", icon); updateMenuItem.setFont(new Font("MS UI Gothic", Font.PLAIN, 12)); updateMenuItem.setBackground(Color.WHITE); updateMenuItem.setMnemonic(KeyEvent.VK_U); JMenuItem propertyMenuItem = new JMenuItem("画像のプロパティ(P)", icon); propertyMenuItem.setFont(new Font("MS UI Gothic", Font.PLAIN, 12)); propertyMenuItem.setBackground(Color.WHITE); propertyMenuItem.setMnemonic(KeyEvent.VK_P); propertyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK)); popup.add(updateMenuItem); popup.add(propertyMenuItem); getContentPane().add(p, BorderLayout.CENTER); } public void mouseReleased(MouseEvent e){ showPopup(e); } public void mousePressed(MouseEvent e){ showPopup(e); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} private void showPopup(MouseEvent e){ if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } }
上記をコンパイルした後で実行すると次のように表示されます。
今回はパネルに対してマウスの右クリックを行うとポップアップメニューが表示されるように設定してあります。
メニューアイテムに画像を設定したり、フォントや背景色を設定してみました。またキーボードニーモニックやキーボードアクセラレーターの設定も可能です。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。