Javaでサブメニュー付きのJPopupMenuを作成する方法
JPopupMenuはJComponentクラスのサブクラスであり、画面上の任意の場所で右クリックされたときに表示されるポップアップメニューを実装するためのクラスです。ポップアップメニューを作成するには、JPopupMenuクラスを使用します。
通常、JPopupMenuにはメニューアイテム(JMenuItem)を追加しますが、サブメニューを追加することも可能です。サブメニューを追加する手順は、まずサブメニュー(JMenu)にメニューアイテムを追加し、その後、完成したサブメニューをJPopupMenuに追加するという流れになります。
ポップアップメニューはマウスイベントによって起動されるため、MouseListenerインターフェースを登録する必要があります。mouseReleased()メソッドをオーバーライドし、isPopupTrigger()メソッドで適切なイベントかどうかを判定した上で、マウスイベントの座標を引数としてshow()メソッドを呼び出すことで、ポップアップメニューを表示できます。
サンプルコード
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class JPopupMenuwithSubMenuTest extends JFrame {
private JPopupMenu popup;
private JMenu subMenu;
public JPopupMenuwithSubMenuTest() {
setTitle("JPopupMenuwithSubMenu Test");
popup = new JPopupMenu();
subMenu = new JMenu("Course");
subMenu.add("Java");
subMenu.add("Python");
subMenu.add("Scala");
popup.add(new JMenuItem("First Name"));
popup.add(new JMenuItem("Last Name"));
popup.addSeparator();
popup.add(subMenu);
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent me) {
showPopup(me);
}
}) ;
setSize(400, 275);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
void showPopup(MouseEvent me) {
if(me.isPopupTrigger())
popup.show(me.getComponent(), me.getX(), me.getY());
}
public static void main(String args[]) {
new JPopupMenuwithSubMenuTest();
}
}実行結果
このプログラムを実行すると、ウィンドウ上で右クリックした位置にポップアップメニューが表示されます。メニューには「First Name」「Last Name」の項目とセパレーター(区切り線)が表示され、さらに「Course」というサブメニューを選択すると、「Java」「Python」「Scala」の項目が展開されて表示されます。

ポイントまとめ
- サブメニューはJMenuオブジェクトとして作成し、先にアイテムを追加してからJPopupMenuに登録する
- addSeparator()メソッドを使うと、メニュー項目間に区切り線を挿入できる
- MouseAdapterを利用すると、必要なメソッドだけをオーバーライドでき、コードが簡潔になる
- isPopupTrigger()による判定により、OSごとに異なるポップアップ表示のタイミング(Windowsでは右クリック解放時など)に対応できる
-
Javaでログインフォームを作成する方法!Swingを使った実装例とサンプルコード
JavaではSwingというGUIツールキットを利用することで、デスクトップアプリケーション向けのログインフォームを簡単に開発できます。この記事では、ユーザー名(User Name)とパスワード(Password)の2つのラベル、認証情報を入力するための2つのテキストフィールド、そしてSUBMIT(送信)ボタンを1つ備えたフォームを作成します。正しい認証情報が入力されると、フォーム上に「Hello admin」というメッセージが表示されます。 使用する主なコンポーネント JLabel:ラベルの表示に使用します。 JTextField:ユーザー名の入力欄です。 JPasswordField:
-
Tkinterでポップアップメニューを作成する方法をわかりやすく解説
ユーザーとの対話が必要なアプリケーションには、メニューバーが欠かせません。メニューは Menu(parent) オブジェクトを初期化し、そこにメニュー項目を追加していくことで作成できます。 ポップアップメニューの場合は、tk_popup(x_root, y_root, False) を呼び出すことで実現します。このメソッドにより、指定した画面座標上に確実にメニューが表示されます。さらに、マウスの右クリック(Button-3)で発火するイベントをバインドすれば、右クリック操作だけでメニューを開けるようになります。また、grab_release() メソッドを使うことで、マウスボタンを離した際にポ