JPopupMenuクラスの定義とコンストラクタ

広告

JPopupMenuクラスの定義を確認します。クラス図は次のようになっています。

java.lang.Object
  java.awt.Component
    java.awt.Container
      javax.swing.JComponent
        javax.swing.JPopupMenu

public class JPopupMenu extends JComponent implements Accessible, MenuElement

JPopupMenuクラスはJComponentクラスのサブクラスとなっています。JComponentクラスはSwingで用いられる多くのコンポーネントのベースとなっているクラスです。

JPopupMenuクラスのコンストラクタ

JPopupMenuクラスをを利用するにはコンストラクタを使ってJPopupMenuクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。

コンストラクタ
JPopupMenu()
呼び出しコンポーネントの定義なしで JPopupMenu を構築します。
JPopupMenu(String label)
指定されたタイトルの PopupMenu を構築します。

コンストラクタは2つだけです。タイトルを指定するかどうかでコンストラクタを使い分けますが、通常ポップアップメニューではタイトルは使用しません。

では1番目のコンストラクタを確認してみます。

public JPopupMenu()

呼び出しコンポーネントの定義なしで JPopupMenu を構築します。

ポップアップメニュー自体はメニューアイテムを格納するための箱です。その為ポップアップメニューだけを作成しても中身が無い枠だけが作成されます。

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

JPopupMenu popup = new JPopupMenu();

サンプルプログラム

では簡単なサンプルを作成して試してみます。まだ解説していない部分が多数出てきますが次のページ以降で順次解説していきます。

JPopupMenuTest1.java

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

public class JPopupMenuTest1 extends JFrame implements MouseListener{

  JPopupMenu popup;

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

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

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

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

    p.addMouseListener(this);

    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 )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。