ポップアップメニューにセパレータを追加する

広告

ポップアップメニューにはメニューアイテムを追加していきますがメニューアイテムとメニューアイテムの間にセパレータ(横棒です)を表示させることができます。JPopupMenuクラスで用意されている「addSeparator」メソッドを使います。

メニューの末尾に新しいセパレータを追加します。

メニューアイテムを追加するのと同じようにこのメソッドを実行して下さい。例えば4つのメニューアイテムを追加しその中間にセパレータを入れたい場合には次のように行います。

実際の使い方は次のようになります。

JPopupMenu popup = new JPopupMenu();

JMenuItem menuitem1 = new JMenuItem("新規作成");
JMenuItem menuitem2 = new JMenuItem("開く");
JMenuItem menuitem3 = new JMenuItem("保存");
JMenuItem menuitem4 = new JMenuItem("閉じる");

popup.add(menuitem1);
popup.add(menuitem2);
popup.addSeparator();
popup.add(menuitem3);
popup.add(menuitem4);

popup.show(label, 10, 10);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JPopupMenuTest5.java

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.*;

public class JPopupMenuTest5 extends JFrame implements MouseListener{

  JPopupMenu popup;

  public static void main(String[] args){
    JPopupMenuTest5 frame = new JPopupMenuTest5();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JPopupMenuTest5(){
    JButton button = new JButton("button");

    JPanel p = new JPanel();
    p.addMouseListener(this);
    p.add(button);

    popup = new JPopupMenu();

    JMenuItem newMenuitem = new JMenuItem("新規作成");
    JMenuItem openMenuitem = new JMenuItem("開く");
    JMenuItem saveMenuitem = new JMenuItem("保存");
    JMenuItem saveasMenuitem = new JMenuItem("名前を付けて保存");
    JMenuItem closeMenuitem = new JMenuItem("閉じる");

    popup.add(newMenuitem);
    popup.add(openMenuitem);
    popup.addSeparator();
    popup.add(saveMenuitem);
    popup.add(saveasMenuitem);
    popup.addSeparator();
    popup.add(closeMenuitem);

    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());
    }
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JPopupMenuでセパレーターを追加する

メニューとメニューの間にセパレーターを追加されているのが確認できます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。