Java JComboBox itemStateChanged事件一次调用两次

Java JComboBox itemStateChanged事件一次调用两次,java,swing,Java,Swing,为什么在combobox中选择项时会调用此事件两次。JComobox ItemListener会因为一次更改而调用两次。一次用于选定事件,一次用于取消选定事件 有关如何编写ItemListener的信息,请参见 基本上你要做的是 resultCombo = new JComboBox(); resultCombo.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEven

为什么在combobox中选择项时会调用此事件两次。

JComobox ItemListener会因为一次更改而调用两次。一次用于选定事件,一次用于取消选定事件

有关如何编写ItemListener的信息,请参见

基本上你要做的是

resultCombo = new JComboBox();
resultCombo.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent ie) {
         sampleText=resultCombo.getSelectedItem().toString();
         System.out.println("SampleText : "+sampleText);
    }
});


output:
SampleText : selectedword
SampleText : selectedword

根据

当用户选择或取消选择项目时调用。这个 为此方法编写的代码执行需要执行的操作 选择(或取消选择)项目时发生


这表明当取消选择或选择某个项目时,您将收到一个事件。由于组合框中所选项目的更改需要先取消选择当前所选项目,因此您将收到一个
ItemEvent。取消选择
ItemEvent。选择
事件

感谢您的回答,我将此用于所选项目,效果良好。如果(即getStateChange()==1)使用
e.getStateChange()==ItemEvent.SELECTED
。阅读您的代码的其他人更容易理解。谢谢您的回答
public void itemStateChanged(ItemEvent e) {
    if (e.getStateChange() == ItemEvent.SELECTED) {
        //Do any operations you need to do when an item is selected.
    } else if(e.getStateChange() == ItemEvent.DESELECTED){
        //Do any operations you need to do when an item is de-selected.
    }
}