Jcombobox - 订阅selectedItemChanged事件

时间:2012-12-04 15:56:07

标签: java swing actionlistener jcombobox event-listener

每当组合框中的选定项目发生变化时,我都会尝试执行操作。一个特定的场景,当没有通知动作监听器时,是在组合框上重置模型的时候。我可以订阅另一个PropertyChangedListener并在模型更改时收听,然后提取所选项目,但我只是不明白为什么所选项目更改事件不会在模型更改时引发。视觉上您的选择确实会发生变化,即使您查询cobox的选定项目,它确实会从null更改为某个对象...对此明确解决此问题,而不是使用两个单独的侦听器?

1 个答案:

答案 0 :(得分:2)

如果在重置模型时动作和项侦听器不触发事件,您可以通过继承JComboBox来自己触发这些事件:

public class MyComboBox extends JComboBox 
{
    @Override
    public void setModel(ComboBoxModel aModel) {
        super.setModel(aModel);
        fireActionEvent();
    }
}

但恕我直言,这是一个错误 - 你应该向官方的bugzilla报告。