「Java/swing/サンプル/ポップアップメニュー」の編集履歴(バックアップ)一覧はこちら

Java/swing/サンプル/ポップアップメニュー」(2012/09/22 (土) 11:27:40) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

右クリックでポップアップメニューを表示するサンプルです。 *** ポイント + ポップアップメニューは、JFrameの上に載せるコンポーネントに実装するのが一般的です。 + ポップアップメニューはJPopupMenuにJMenuItemを追加して作ります + 右クリックを検知するにはaddMouseListenerでマウスリスナーを設定します + マウスクリックイベントはmouseClickedに届きます + マウスのどのボタンをクリックしてもmouseClickedに来るので、押されたボタンを判定します + 右クリックの判定ならSwingUtilities.isRightMouseButtonが便利です + e.getX() e.getY()を渡すと、ちょうどマウスでクリックしたところにメニューが出ます *** 実行結果 |&ref(swing右クリックメニューのテスト1.png)|&ref(swing右クリックメニューのテスト2.png)| |右クリックして~|メニューを選択、ダイアログが表示されました。| *** ソース #highlight(){{ import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; // ポップアップメニューのテスト // ポイント1 ポップアップメニューは、JFrameの上に載せるコンポーネントに実装するのが一般的です。 // なので今回はJFrameではなくJPanelのサブクラスで作ります public class PopupMenuTest extends JPanel implements ActionListener, MouseListener { // ポップアップメニューをクラス変数に持ちます JPopupMenu popupMenu = new JPopupMenu(); public static void main(String[] args) { // JFrameを作り、基本的な設定をします JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setBounds(100, 100, 200, 100); f.setTitle("右クリックメニューのテスト"); // コンテンツペインに今回作成したパネルを追加します。 f.getContentPane().add(new PopupMenuTest()); f.setVisible(true); } public PopupMenuTest() { init(); } // 初期化メソッド private void init() { // ポイント2 ポップアップメニューはJPopupMenuにJMenuItemを追加して作ります // JMenuItemを作りJPopupMenuに追加します JMenuItem i = new JMenuItem("右クリックメニューのテストi"); JMenuItem j = new JMenuItem("右クリックメニューのテストj"); // どのメニューが押されたか判断するために名前をつけます i.setName("i"); j.setName("j"); // アクションリスナーを設定します i.addActionListener(this); j.addActionListener(this); // ここでポップアップメニューにアイテムを追加します popupMenu.add(i); popupMenu.add(j); // ポイント3 右クリックを検知するにはaddMouseListenerでマウスリスナーを設定します addMouseListener(this); } // ActionListenerの実装メソッドです @Override public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof Component) { Component c = (Component) e.getSource(); String name = c.getName(); if ("i".equals(name)) { JOptionPane.showMessageDialog(this, "選択されたのはiメニューです。"); } if ("j".equals(name)) { JOptionPane.showMessageDialog(this, "選択されたのはjメニューです。"); } } } // MouseListenerインターフェイスの実装メソッドです // ポイント4 マウスクリックイベントはmouseClickedに届きます @Override public void mouseClicked(MouseEvent e) { // マウスクリックでここに来ます // ポイント5 マウスのどのボタンをクリックしてもmouseClickedに来るので、押されたボタンを判定します // ポイント6 右クリックの判定ならSwingUtilities.isRightMouseButtonが便利です if (SwingUtilities.isRightMouseButton(e)) { // ポップアップメニューを表示します。 // ポイント7 e.getX() e.getY()を渡すと、ちょうどマウスでクリックしたところにメニューが出ます popupMenu.show(this, e.getX(), e.getY()); } } @Override public void mousePressed(MouseEvent e) { // マウスのボタンを押した時はここに来ます // 今回は何もしないので空のメソッドにしておきます } @Override public void mouseReleased(MouseEvent e) { // マウスのボタンを離した時はここに来ます // 今回は何もしないので空のメソッドにしておきます } @Override public void mouseEntered(MouseEvent e) { // マウスカーソルがコンポーネントの上にきた時にここに来ます // 今回は何もしないので空のメソッドにしておきます } @Override public void mouseExited(MouseEvent e) { // マウスカーソルがコンポーネントの外にでた時にここに来ます // 今回は何もしないので空のメソッドにしておきます } } }} *** アフィリエイト #amazon2() *** ここまで
右クリックでポップアップメニューを表示するサンプルです。 *** ポイント + ポップアップメニューは、JFrameの上に載せるコンポーネントに実装するのが一般的です。 + ポップアップメニューはJPopupMenuにJMenuItemを追加して作ります + 右クリックを検知するにはaddMouseListenerでマウスリスナーを設定します + マウスクリックイベントはmouseClickedに届きます + マウスのどのボタンをクリックしてもmouseClickedに来るので、押されたボタンを判定します + 右クリックの判定ならSwingUtilities.isRightMouseButtonが便利です + e.getX() e.getY()を渡すと、ちょうどマウスでクリックしたところにメニューが出ます *** 実行結果 |&ref(swing右クリックメニューのテスト1.png)|&ref(swing右クリックメニューのテスト2.png)| |右クリックして~|メニューを選択、ダイアログが表示されました。| *** ソース &ref(PopupMenuTest.java) #highlight(){{ import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; // ポップアップメニューのテスト // ポイント1 ポップアップメニューは、JFrameの上に載せるコンポーネントに実装するのが一般的です。 // なので今回はJFrameではなくJPanelのサブクラスで作ります public class PopupMenuTest extends JPanel implements ActionListener, MouseListener { // ポップアップメニューをクラス変数に持ちます JPopupMenu popupMenu = new JPopupMenu(); public static void main(String[] args) { // JFrameを作り、基本的な設定をします JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setBounds(100, 100, 200, 100); f.setTitle("右クリックメニューのテスト"); // コンテンツペインに今回作成したパネルを追加します。 f.getContentPane().add(new PopupMenuTest()); f.setVisible(true); } public PopupMenuTest() { init(); } // 初期化メソッド private void init() { // ポイント2 ポップアップメニューはJPopupMenuにJMenuItemを追加して作ります // JMenuItemを作りJPopupMenuに追加します JMenuItem i = new JMenuItem("右クリックメニューのテストi"); JMenuItem j = new JMenuItem("右クリックメニューのテストj"); // どのメニューが押されたか判断するために名前をつけます i.setName("i"); j.setName("j"); // アクションリスナーを設定します i.addActionListener(this); j.addActionListener(this); // ここでポップアップメニューにアイテムを追加します popupMenu.add(i); popupMenu.add(j); // ポイント3 右クリックを検知するにはaddMouseListenerでマウスリスナーを設定します addMouseListener(this); } // ActionListenerの実装メソッドです @Override public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof Component) { Component c = (Component) e.getSource(); String name = c.getName(); if ("i".equals(name)) { JOptionPane.showMessageDialog(this, "選択されたのはiメニューです。"); } if ("j".equals(name)) { JOptionPane.showMessageDialog(this, "選択されたのはjメニューです。"); } } } // MouseListenerインターフェイスの実装メソッドです // ポイント4 マウスクリックイベントはmouseClickedに届きます @Override public void mouseClicked(MouseEvent e) { // マウスクリックでここに来ます // ポイント5 マウスのどのボタンをクリックしてもmouseClickedに来るので、押されたボタンを判定します // ポイント6 右クリックの判定ならSwingUtilities.isRightMouseButtonが便利です if (SwingUtilities.isRightMouseButton(e)) { // ポップアップメニューを表示します。 // ポイント7 e.getX() e.getY()を渡すと、ちょうどマウスでクリックしたところにメニューが出ます popupMenu.show(this, e.getX(), e.getY()); } } @Override public void mousePressed(MouseEvent e) { // マウスのボタンを押した時はここに来ます // 今回は何もしないので空のメソッドにしておきます } @Override public void mouseReleased(MouseEvent e) { // マウスのボタンを離した時はここに来ます // 今回は何もしないので空のメソッドにしておきます } @Override public void mouseEntered(MouseEvent e) { // マウスカーソルがコンポーネントの上にきた時にここに来ます // 今回は何もしないので空のメソッドにしておきます } @Override public void mouseExited(MouseEvent e) { // マウスカーソルがコンポーネントの外にでた時にここに来ます // 今回は何もしないので空のメソッドにしておきます } } }} *** アフィリエイト #amazon2() *** ここまで

表示オプション

横に並べて表示:
変化行の前後のみ表示: