我有一个JComboBox
,它有一个关联的itemStageChanged
方法。 JComboxBox
有两种更新方式:
comboBox.setSelectedItem(...)
comboBox
中的项目我只想(2)发起一个事件。我应该使用哪种方法(例如actionPerformed
?changeListener
?itemListener
?等)只能捕获(2)而不捕获(1)。目前,{1}和(2)正在调用itemStateChanged
(即使使用if
语句来检查它是否为ItemEvent.SELECTED
。
class ItemChangeListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
//gets in here if user selects an item with their mouse
//or if setSelectedItem is called
}
}
}
答案 0 :(得分:-1)
尝试一下:
Boolean flag = false;
class ItemChangeListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent event) {
// Condition for the desired event
if (!flag && event.getStateChange() == ItemEvent.SELECTED) {
Object item = event.getItem();
// do something with object
}
}
}
[...]
//Add the listener
myComboBox.addItemListener(new ItemChangeListener());
[...]
// Setting the selection
flag = true;
comboBox.setSelectedItem(...)
flag = false;
取自here。