如何在Java Swing中创建右键单击上下文菜单?
我当前正在通过右键单击实例化JMenu
并将其位置设置为鼠标位置的位置来创建右键单击上下文菜单。是否有更好的方法?
回答:
您可能正在手动调用setVisible(true)
菜单。这会导致菜单中出现一些令人讨厌的越野车行为。
该show(Component, int x, int
x)方法处理所有需要发生的事情(在鼠标悬停时突出显示事情,并在必要时关闭弹出窗口),其中使用setVisible(true)
只是显示菜单而无需添加任何其他行为。
要进行右键单击弹出菜单,只需创建一个JPopupMenu
。
class PopUpDemo extends JPopupMenu { JMenuItem anItem;
public PopUpDemo() {
anItem = new JMenuItem("Click Me!");
add(anItem);
}
}
然后,您所要做的就是向MouseListener
要弹出菜单的组件中添加一个自定义项。
class PopClickListener extends MouseAdapter { public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger())
doPop(e);
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
doPop(e);
}
private void doPop(MouseEvent e) {
PopUpDemo menu = new PopUpDemo();
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
// Then on your component(s)
component.addMouseListener(new PopClickListener());
当然,这些教程会有更深入的解释。
如果您发现弹出菜单与用户单击的位置相距很远,请尝试对x和y坐标使用e.getXOnScreen()
和e.getYOnScreen()
方法。
以上是 如何在Java Swing中创建右键单击上下文菜单? 的全部内容, 来源链接: utcz.com/qa/402177.html