Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止JComboBox removeAllItems触发动作侦听器_Java_Swing_Actionlistener_Jcombobox - Fatal编程技术网

Java 如何防止JComboBox removeAllItems触发动作侦听器

Java 如何防止JComboBox removeAllItems触发动作侦听器,java,swing,actionlistener,jcombobox,Java,Swing,Actionlistener,Jcombobox,我有一个JComboBox,当selectedItem更改时,我想更新SouthPanel。这很好,但是如果我更新包含JComboBox的面板,它必须removeAllItems()并重新添加项,因为这些项可能已更改,从而导致面板更新。我有一个存储组合框索引的变量,这样它可以在更新后设置相同的索引 问题是,当运行removeAllItems()时,它会触发ActionListener,并将selectedIndex设置为1。我怎样才能避开这件事 @Override public void act

我有一个
JComboBox
,当
selectedItem
更改时,我想更新
SouthPanel
。这很好,但是如果我更新包含
JComboBox
的面板,它必须
removeAllItems()
并重新添加项,因为这些项可能已更改,从而导致面板更新。我有一个存储组合框索引的变量,这样它可以在更新后设置相同的索引

问题是,当运行
removeAllItems()
时,它会触发
ActionListener
,并将
selectedIndex
设置为1。我怎样才能避开这件事

@Override
public void actionPerformed(ActionEvent arg0) {
    if(sequenceComboBox.getSelectedIndex() > -1){
        selectedIndex = sequenceComboBox.getSelectedIndex();
        selected = medb.getContentManager().getSequences().get(sequenceComboBox.getSelectedIndex());
        updateSouth();
        System.out.println("sequence updated to " + selectedIndex);
    }
}

与其试图操纵模型,不如换一个新的?您可能还需要设置某种标志,该标志可用于通知
ActionListener
正在发生更改,并且应忽略任何通知。您可以始终删除所有侦听器,并在处理后重新连接它们。