你好,我正在使用一个组合框,当我触发IteamStateChage事件时,该操作调用了两次。但是,如果我打了两次电话,我无法使我想做的事情成为可能。
那么,是否有任何方法只调用一次IteamStatechange evet。当我把它换成Jcombobox时。我只需要itemStatechange的一次行动。并且仅使用项状态更改。
请帮我同样的忙。提前感谢你们的到来。
发布于 2014-01-03 07:40:26
在这方面,这是预期的行为。组合框发出取消选择当前项和选择新项的信号。
在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;
}
}发布于 2014-01-03 07:46:45
下面是如何确定更改事件是选择还是取消选择的示例:
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");
}
}
});https://stackoverflow.com/questions/20898619
复制相似问题