关于java:JComboBox选择更改侦听器?

关于java:JComboBox选择更改侦听器?

JComboBox Selection Change Listener?


它应该像这样响应ActionListeners:

1
2
3
4
5
combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

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


ItemListener实现的代码示例

1
2
3
4
5
6
7
8
9
class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }      
}

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

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

1
addItemListener(new ItemChangeListener());

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


这里正在创建一个ComboBox,为项目选择更改添加了一个侦听器:

1
2
3
4
5
6
7
8
9
10
11
12
13
JComboBox comboBox = new JComboBox();

comboBox.setBounds(84, 45, 150, 20);
contentPane.add(comboBox);

JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(84, 97, 150, 20);
contentPane.add(comboBox_1);
comboBox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent arg0) {
        //Do Something
    }
});

您可以尝试这些

1
 int selectedIndex = myComboBox.getSelectedIndex();

-或-

1
Object selectedObject = myComboBox.getSelectedItem();

-或-

1
String selectedValue = myComboBox.getSelectedValue().toString();

我最近在寻找这种相同的解决方案,并设法找到一种简单的解决方案,而没有为最后选择的项目和新选择的项目分配特定的变量。这个问题虽然很有帮助,但没有提供我需要的解决方案。这解决了我的问题,希望它能解决您和其他人的问题。谢谢。

如何获得上一个或最后一个项目?


您可以使用jdk> = 8

来执行此操作

1
getComboBox().addItemListener(this::comboBoxitemStateChanged);

so

1
2
3
4
5
6
public void comboBoxitemStateChanged(ItemEvent e) {
    if (e.getStateChange() == ItemEvent.SELECTED) {
        YourObject selectedItem = (YourObject) e.getItem();
        //TODO your actitons
    }
}


推荐阅读