如何在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

回到顶部