JComboBox选择更改侦听器?

问题

无论何时从aJComboBox做出选择,我都试图让事件发生。

我遇到的问题是没有明显的addSelectionListener()方法。

我试过使用actionPerformed()但它永远不会发射。

没有超越模型的JComboBox我没有想法。
如何在aJComboBox上收到有关选择更改的通知?
**编辑:**我不得不道歉它原来我使用了一个行为错误的子类JComboBox,但我会留下问题,因为你的答案是好的。开始投票。 :)


#1 热门回答(139 赞)

它应该响应ActionListeners,如下所示:

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@John Calsbeekrightly指出addItemListener()也将工作。但是,你可以获得2ItemEvents,一个用于取消选择先前选择的项目,另一个用于选择新项目。只是不要使用这两种事件类型!


#2 热门回答(137 赞)

代码示例ofItemListener实现

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

现在我们只获得选定的项目。

然后只需将侦听器添加到JComboBox

addItemListener(new ItemChangeListener());

#3 热门回答(21 赞)

如果jodonnell的解决方案失败,我会尝试ItemListener接口的itemStateChanged()方法。