我有一个java程序,在JPanel中右键单击时打开一个弹出菜单.单击任何弹出菜单项时,我想打印在终端中触发弹出菜单的右键单击位置.我该怎么做呢?如何在弹出操作事件中获取右键单击发生位置的位置?
如果弹出菜单位于JComponent中,代码如何更改?
这是程序.
import java.awt.EventQueue;
import java.awt.event.*;
import javax.swing.*;
public class MenuTest
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MenuFrame frame = new MenuFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class MenuFrame extends JFrame
{
public MenuFrame()
{
setTitle("MenuTest");
setSize(300, 200);
Action cutAction = new TestAction("Cut");
Action copyAction = new TestAction("Copy");
Action pasteAction = new TestAction("Paste");
JPopupMenu popup = new JPopupMenu();
popup.add(cutAction);
popup.add(copyAction);
popup.add(pasteAction);
JPanel panel = new JPanel();
panel.setComponentPopupMenu(popup);
add(panel);
panel.addMouseListener(new MouseAdapter() …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我在右键单击JTable时创建了一个弹出菜单.创建弹出菜单的标准方法:
aJTable.setComponentPopupMenu(rightClickMenu);
Run Code Online (Sandbox Code Playgroud)
之后在注册的操作中,我无法找到右键单击哪个单元格以显示该弹出菜单.
rightClickMenuItem.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// Work out what cell was right clicked to generate the menu
}
});
Run Code Online (Sandbox Code Playgroud)
关于你如何做到这一点的任何想法?