向JPopupMenu选项添加操作

时间:2016-02-16 10:33:32

标签: java swing mouselistener jpopupmenu

我有一个扩展JPanel并实现MouseListener的类。在此类中,如果单击面板,则执行以下两个函数:

@Override
public void mouseClicked(MouseEvent e) {
    displayExitPopup();
}

private void displayExitPopup() {
    JPopupMenu exitPopup = new JPopupMenu();
    exitPopup.add("Exit Game");
    exitPopup.add("Cancel");
    exitPopup.show(this, this.getWidth(), this.getHeight());
}

一切正常,弹出窗口显示2个选项。

现在我尝试在点击弹出菜单中的两个选项中的任何一个时执行操作 - System.exit(0)如果单击Exit Game,则弹出菜单关闭Cancel是点击。怎么办呢?

2 个答案:

答案 0 :(得分:3)

如果您查看JavaDocs for JPopupMenu#add(String),您会发现这是一种方便的方法,可以返回JMenuItem,然后您应该可以向其添加ActionListener

请查看Bringing up a PopupMenu了解详情

话虽如此,我鼓励您使用Action API,这样您就可以创建自包含的工作单元,这也提供了创建JMenuItem所需的信息由JPopupMenu

有关详细信息,请查看How to Use Actions

您还应该使用JComponent#setComponentPopupMenu而不是尝试使用MouseListener,因为不同的平台对弹出菜单有不同的触发器,而且它很复杂而且很难实现

答案 1 :(得分:2)

将项目添加到JPopupMenu时,您会收到JMenuItem。在此对象上,您可以致电addActionListener添加动作监听器,就像使用JTextFieldJButton一样。

exitPopup.add("Cancel").addActionListener(e-> {
    // do something
});