java如何检测用户何时真正选择了组合框的菜单项?
我目前面临的情况是,如果用户单击我的组合框并用键移动选择,选择侦听器将继续被调用,尽管出于所有目的,用户仍然没有真正做出选择
我如何区分这些“中间”选择和组合框中正确的、最终的用户选择
我试着查看变量,比如isPopupVisible
,甚至玩PopupMenuListener
,但它们似乎没有真正的帮助
谢谢
编辑:违规代码的示例:
public class Main extends JFrame {
public Main() {
setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
JComboBox<String> comboBox = new JComboBox<>();
comboBox.setModel(new DefaultComboBoxModel<>(new String[] { "a", "b", "c" }));
comboBox.addItemListener(e -> {
System.out.println(e.getItem());
});
add(comboBox);
}
}
# 1 楼答案
设置上述属性,使事件仅在释放鼠标或按Enter键时生成
注:
如果使用
ActionListner
,则在选择某个项目时始终会生成该事件如果使用
ItemListener
,则仅当您从以前的选择更改所选项目时,才会生成事件编辑:
您可以使用以下命令禁用密钥选择:
编辑2:
或者,作为黑客,你可以在进行按键搜索时禁用你的侦听器。代码可能类似于: