8

複数のJTableに追加したJPopUpMenuがあり、右クリックして変更できるように特定のテーブルを取得したいと思います。アクションリスナーでJPopupMenuをトリガーするコンポーネントを取得するにはどうすればよいですか?

JPopupMenu popupMenu = new JPopupMenu();
JMenuItem menuItemRename = new JMenuItem("Rename");
popupMenu.add(menuItemRename);
table.getTableHeader().setComponentPopupMenu(popupMenu);

ActionListener menuListener = new ActionListener() {
    public void actionPerformed(ActionEvent event) {
           String newTitle = JOptionPane.showInputDialog(null, "Enter new title");
                   //Get the table and rename it here 
                }
            };
menuItemRename.addActionListener(menuListener);
4

3 に答える 3

10

メソッドを使用しgetInvoker()ます。

Component invoker = popupMenu.getInvoker();
于 2012-09-14T08:43:15.120 に答える
0

event.getSource()メソッドを使用します。

于 2012-09-14T08:50:46.023 に答える
0

FWIW、

// ActionEvent e
((JPopupMenu)((JMenuItem)e.getSource()).getParent()).getInvoker()

ああ、神様...

于 2020-03-11T23:05:42.010 に答える