您好,我正在使用一个Combobox,当我触发IteamStateChage事件时,该操作会调用两次。但是,如果我打了两次电话,我就无法使我想做的事情成为可能。
那么有没有办法只调用一次IteamStatechange evet。当我将iteam改为Jcombobox时。我只需要一次itemStatechange的动作。并且仅使用项目状态更改。![此处屏幕截图相同。] [1]
请帮我一样。 并提前感谢你。
答案 0 :(得分:7)
在这种情况下,这是预期的行为。组合框表示取消选择当前项目和选择新项目。
在itemStateChanged
方法中,您需要检查ItemEvent
的状态,以确定您应该做什么。
public void itemStateChanged(ItemEvent evt) {
switch (evt.getStateChanged()) {
case ItemEvent.DESELECTED:
// Do what ever you want when the item is deselected
break;
case ItemEvent.SELECTED:
// Do what ever you want when the item is selected
break;
}
}
答案 1 :(得分:3)
以下是如何确定更改事件是选择还是取消选择的示例:
JComboBox<String> comboBox = new JComboBox<>(new String[] {"one", "two", "foo"});
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println("Change");
if(e.getStateChange() == ItemEvent.SELECTED){
System.out.println("Selected");
}
if(e.getStateChange() == ItemEvent.DESELECTED){
System.out.println("Deselected");
}
}
});