我目前正在用Java制作TODO GUI应用程序以进行练习。我希望添加到列表中的每个项目都有一个要删除的选项。因此,我创建了一个上下文菜单(或swing中的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);
我做到了。我遵循了MadProgrammer的指令:
基本上,您可以将鼠标侦听器附加到每个组件,它会触发一个弹出窗口,您可以动态构建菜单,给项目本身播种。
谢谢。