问题
无论何时从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()
方法。