JComboBox 选择更改侦听器?

2022-08-31 07:14:46

我正在尝试让事件在从 .JComboBox

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

我尝试过使用,但它从不开火。actionPerformed()

没有覆盖模型,我就没有想法了。JComboBox

我如何获得有关选择更改的通知?JComboBox

编辑:我必须道歉。事实证明,我使用的是 一个行为不端的子类,但是由于您的答案很好,因此我将保留这个问题。JComboBox


答案 1

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

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

@John Calsbeek正确地指出,这也将起作用。但是,您可能会得到 2 个,一个用于取消选择以前选定的项目,另一个用于选择新项目。只是不要同时使用这两种事件类型!addItemListener()ItemEvents


答案 2

实现代码示例ItemListener

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());

推荐