- Home ›
- Swing ›
- メニューの作成(JMenu,JMenuBar,JMenuItemクラス) ›
- HERE
メニューにメニューアイテムを追加/挿入/削除
メニューを作成したら、メニューアイテムをメニューに追加していきます。ここではメニューにメニューアイテムを追加したり削除したりする方法を確認していきます。
メニューアイテムを追加
メニューを作成後、メニューアイテムをメニューに追加する方法を確認します。JMenuクラスで定義されているaddメソッドを使います。
add public JMenuItem add(JMenuItem menuItem)
このメニューの最後にメニュー項目を追加します。追加されたメニュー項目を返します。 パラメータ: menuItem - 追加する JMenuItem 戻り値: 追加された JMenuItem
引数にはメニューアイテムを表すJMenuItemクラスのオブジェクトを指定します。メソッドが実行されるとメニューの最後に引数に指定したメニューアイテムが追加されます。
実際の使い方は次のようになります。
JMenu menu = new JMenu("File"); JMenuItem menuitem1 = new JMenuItem("New"); JMenuItem menuitem2 = new JMenuItem("Open"); menu.add(menuitem1); menu.add(menuitem2);
メニューアイテムを挿入
メニューアイテムをメニュー内の任意の位置に挿入する方法を確認します。JMenuクラスで定義されているinsertメソッドを使います。
insert public JMenuItem insert(JMenuItem mi, int pos)
指定された JMenuItem を指定された位置に挿入します。 パラメータ: mi - 追加する JMenuItem pos - 新しい JMenuItem を追加する位置を指定する整数 戻り値: 新しいメニュー項目 例外: IllegalArgumentException - pos の値が 0 より小さい場合
1番目の引数にはメニューアイテムを表すJMenuItemクラスのオブジェクトを指定します。そして2番目の引数にはメニューアイテムを挿入する位置を指定します。先頭のメニューアイテムの前に挿入する時は0を指定し、先頭と2番目の間の位置に挿入する場合は1を指定します。
実際の使い方は次のようになります。
JMenu menu = new JMenu("File"); JMenuItem menuitem1 = new JMenuItem("New"); JMenuItem menuitem2 = new JMenuItem("Close"); JMenuItem menuitem3 = new JMenuItem("Open"); menu.add(menuitem1); menu.add(menuitem2); menu.insert(menuitem3, 1);
メニューアイテムを削除
既に追加済みのメニューアイテムを削除する方法を確認します。JMenuクラスで定義されているremoveメソッドを使います。
remove public void remove(JMenuItem item)
このメニューから指定されたメニュー項目を削除します。ポップアップメニューがない場合は、この メソッドは無効です。 パラメータ: item - メニューから削除する JMenuItem
引数には削除したいJMenuItemクラスのオブジェクトを指定します。このオブジェクトはメニューに追加されているオブジェクトだある必要があります。
またメニューアイテムのインデックスを指定して削除することもできます。先ほどと同名のメソッドで引数が異なっているremoveメソッドを使います。
remove public void remove(int pos)
このメニューから、指定されたインデックスにあるメニュー項目を削除します。 パラメータ: pos - 削除される項目の位置 例外: IllegalArgumentException - pos の値が 0 より小さいか、pos がメニュー項目の数より大きい 場合
引数には削除するメニューアイテムのインデックスを指定します。先頭のメニューアイテムのインデックスは0、次のメニューアイテムのインデックスは1です。
また全てのメニューアイテムを削除することもできます。JMenuクラスで定義されているremoveAllメソッドを使います。
removeAll public void removeAll()
このメニューからメニュー項目をすべて削除します。
メソッドを実行すると、対象のメニューに追加されている全てのメニューアイテムが削除されます。
実際の使い方は次のようになります。
JMenu menu = new JMenu("File"); JMenuItem menuitem1 = new JMenuItem("New"); JMenuItem menuitem2 = new JMenuItem("Open"); JMenuItem menuitem3 = new JMenuItem("Close"); menu.add(menuitem1); menu.add(menuitem2); menu.add(menuitem3); menu.remove(menuitem3); menu.remove(1); menu.removeAll();
サンプルプログラム
では実際に試してみます。
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import java.awt.Container; import java.awt.BorderLayout; class SSample4_1 extends JFrame{ public static void main(String args[]){ SSample4_1 frame = new SSample4_1("タイトル"); frame.setVisible(true); } SSample4_1(String title){ setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menubar = new JMenuBar(); JMenu menu1 = new JMenu("File"); JMenu menu2 = new JMenu("Edit"); JMenu menu3 = new JMenu("Tool"); JMenu menu4 = new JMenu("Help"); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); menubar.add(menu4); JMenuItem menuitem1_1 = new JMenuItem("New"); JMenuItem menuitem1_2 = new JMenuItem("Open"); JMenuItem menuitem1_3 = new JMenuItem("Close"); menu1.add(menuitem1_1); menu1.add(menuitem1_2); menu1.add(menuitem1_3); JMenuItem menuitem2_1 = new JMenuItem("Cut"); JMenuItem menuitem2_2 = new JMenuItem("Copy"); JMenuItem menuitem2_3 = new JMenuItem("Paste"); menu2.add(menuitem2_1); menu2.add(menuitem2_3); menu2.insert(menuitem2_2, 1); setJMenuBar(menubar); JPanel p = new JPanel(); JButton button = new JButton("button"); p.add(button); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); } }
ではコンパイルを行った上で実行してみます。
「File」メニューをクリックすると次のようにポップアップメニューが表示されメニューアイテムの一覧が表示されます。
同じく「Edit」メニューをクリックすると次のようにポップアップメニューが表示されメニューアイテムの一覧が表示されます。
( Written by Tatsuo Ikura )