从 Java 中的 JPopupMenu 动作侦听器获取目标
Get target from JPopupMenu action listener in Java
我目前正在 Java 制作一个 TODO GUI 应用程序以供练习。我希望添加到列表中的每个项目都可以选择删除。所以我创建了一个上下文菜单(或 swing 中的 JPopupMenu)。我还添加了一个 JMenuItem,它将从列表中删除该项目。但是,问题来了……我给按钮添加了一个 Action Listener 并传递了一个事件变量,我首先虽然事件变量指向 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);
我做到了。我遵循了 MadProgrammer 的说明:
Basically, you can attach a mouse listener to each component and when
it triggers a popup, you can build the menu dynamically, allowing you
to seed the item itself.
谢谢。
我目前正在 Java 制作一个 TODO GUI 应用程序以供练习。我希望添加到列表中的每个项目都可以选择删除。所以我创建了一个上下文菜单(或 swing 中的 JPopupMenu)。我还添加了一个 JMenuItem,它将从列表中删除该项目。但是,问题来了……我给按钮添加了一个 Action Listener 并传递了一个事件变量,我首先虽然事件变量指向 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);
我做到了。我遵循了 MadProgrammer 的说明:
Basically, you can attach a mouse listener to each component and when it triggers a popup, you can build the menu dynamically, allowing you to seed the item itself.
谢谢。