我想检测选择内容何时发生变化JPopupMenu
。不是单击菜单项时,而是选择(武装)菜单项时。用更简单的话来说,我想检测到这一点:
https://i.stack.imgur.com/gSUvP.gif
应该起作用的事情是将 a 添加ChangeListener到其SelectionModel,但它似乎没有响应选择事件:
public class PopupSelection extends JFrame {
private static final long serialVersionUID = 363879723515243543L;
public PopupSelection() {
super("something");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
JLabel label = new JLabel("right click me");
JPopupMenu menu = new JPopupMenu();
menu.getSelectionModel().addChangeListener(System.out::println);
JMenuItem menuItem1 = new JMenuItem("Item1");
JMenuItem menuItem2 = new JMenuItem("Item2");
JMenuItem menuItem3 = new JMenuItem("Item3");
menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
label.setComponentPopupMenu(menu);
getContentPane().add(label);
setSize(400, 400);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new PopupSelection().setVisible(true));
}
}
我尝试的第二件事是使用 a PropertyChangeListener,但它不起作用(不检测此特定事件):
menu.addPropertyChangeListener(System.out::println);
我知道有另一种选择,ChangeListener即JMenuItem每次迭代 的所有组件时都添加 a JPopupMenu,以便找到选择的组件,但这不是我想要遵循的解决方案,因为它会在我的代码中增加不必要的复杂性。
那么,有没有办法检测选择呢?
如果出现XY 问题,我的最终目标是当用户使用箭头按钮更改菜单选择时正确增加/减少此滚动条:↑ ↓
MM们
温温酱
相关分类