向 JPopupMenu 选项添加操作
Add actions to JPopupMenu options
我有一个扩展 JPanel 并实现 MouseListener 的 class。在这个 class 中,如果单击面板,将执行以下两个函数:
@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
被点击。如何做到这一点?
如果你看一下 JavaDocs for JPopupMenu#add(String)
,你会发现这是一个方便的方法,其中 returns 一个 JMenuItem
,然后你应该可以添加一个 [=12] =] 到它
查看 Bringing up a PopupMenu 了解更多详情
话虽如此,我还是鼓励您使用 Action
API,这将使您能够创建自包含的工作单元,它还提供创建JMenuItem
被 JPopupMenu
使用
查看 How to Use Actions 了解更多详情
您还应该使用 JComponent#setComponentPopupMenu
而不是尝试使用 MouseListener
,因为不同的平台对弹出菜单有不同的触发器,而且它非常复杂和丑陋
将项目添加到 JPopupMenu
时,您会得到一个 JMenuItem
。在这个对象上,您可以调用 addActionListener
来添加一个动作侦听器,就像您使用 JTextField
或 JButton
.
exitPopup.add("Cancel").addActionListener(e-> {
// do something
});
我有一个扩展 JPanel 并实现 MouseListener 的 class。在这个 class 中,如果单击面板,将执行以下两个函数:
@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
被点击。如何做到这一点?
如果你看一下 JavaDocs for JPopupMenu#add(String)
,你会发现这是一个方便的方法,其中 returns 一个 JMenuItem
,然后你应该可以添加一个 [=12] =] 到它
查看 Bringing up a PopupMenu 了解更多详情
话虽如此,我还是鼓励您使用 Action
API,这将使您能够创建自包含的工作单元,它还提供创建JMenuItem
被 JPopupMenu
查看 How to Use Actions 了解更多详情
您还应该使用 JComponent#setComponentPopupMenu
而不是尝试使用 MouseListener
,因为不同的平台对弹出菜单有不同的触发器,而且它非常复杂和丑陋
将项目添加到 JPopupMenu
时,您会得到一个 JMenuItem
。在这个对象上,您可以调用 addActionListener
来添加一个动作侦听器,就像您使用 JTextField
或 JButton
.
exitPopup.add("Cancel").addActionListener(e-> {
// do something
});