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
正在发生更改,并且应忽略任何通知。您可以始终删除所有侦听器,并在处理后重新连接它们。