ポップアップメニューを表示する

広告

JPopupMenuクラスを使ってポップアップメニューを作成した場合、コンストラクタで作成するだけでは表示されません。ポップアップメニューを表示させるにはJPopupMenuクラスで用意されている「show」メソッドを使います。

呼び出しコンポーネント内の x、y 座標で指定された位置に、ポップアップメ
ニューを表示します。

パラメータ:
  invoker - ポップアップメニューが表示されるコンポーネント
  x - ポップアップメニューを表示する 呼び出しコンポーネントの座標空間で
    の x 座標
  y - ポップアップメニューを表示する 呼び出しコンポーネントの座標空間で
    の y 座標

引数には3つの項目を指定します。まず1番目にポップアップメニューが表示されるコンポーネントを指定します。そして2番目と3番目の引数にてポップアップメニューが表示される位置を指定します。位置は1番目の引数で指定したコンポーネントの左上座標を原点とした場合の座標となりどちらもint型の値で指定します。単位はピクセルです。

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

JLable label = new JLabel("xxxxx");

JPopupMenu popup = new JPopupMenu();
popup.show(label, 10, 10);

サンプルプログラム

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

JPopupMenuTest2.java

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

public class JPopupMenuTest2 extends JFrame implements MouseListener{

  JPopupMenu popup;

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

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

  JPopupMenuTest2(){
    JButton button = new JButton("button");
    button.addMouseListener(this);

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

    popup = new JPopupMenu();

    JMenuItem updateMenuItem = new JMenuItem("最新の情報に更新");
    JMenuItem propertyMenuItem = new JMenuItem("画像のプロパティ");
    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());
    }
  }
}

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

JPopupMenuを表示する

今回はボタンに対してマウスの右クリックを行うとポップアップメニューが表示されるように設定してあります。

JPopupMenuを表示する

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)