首页 > 解决方案 > 从 Java 中的 JPopupMenu 动作监听器获取目标

问题描述

我目前正在用 Java 制作一个 TODO GUI 应用程序以供练习。我希望添加到列表中的每个项目都有一个删除选项。所以我创建了一个上下文菜单(或摇摆中的 JPopupMenu)。我还添加了一个 JMenuItem,它将从列表中删除该项目。但是,有问题......我添加了一个动作监听器按钮并传递了一个事件变量,我首先虽然事件变量指向 ListItem,但它实际上指向 MenuItem。

那么,如何让目标(ListItem)最终从列表中删除它?

DefaultListModel<String> listModel = new DefaultListModel<>();
private JList<String> List;

List.setModel(listModel);

JPopupMenu listCtxMenu = new JPopupMenu();

JMenuItem deleteItem = new JMenuItem("Remove Item");
deleteItem.addActionListener(e -> {
    // Access the Target...
});

listCtxMenu.add(deleteItem);

List.setComponentPopupMenu(listCtxMenu);

标签: javaswingcontextmenuactionlistener

解决方案


我做的。我遵循了 MadProgrammer 的指示:

基本上,您可以将鼠标侦听器附加到每个组件,当它触发弹出窗口时,您可以动态构建菜单,允许您为项目本身播种。

谢谢。


推荐阅读