JComboBox 选择更改监听器 JComboBox Select Change Listener JComboBox 选择更改监听器 JComboBox? ?

我试图让一个事件火灾时,一个选择是从 JComboBox

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

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

除了重写 JComboBox的模型之外,我别无他法。

如何获得 JComboBox上选择更改的通知

编辑: 我必须道歉。原来我使用的是 JComboBox的一个行为不端的子类,不过既然你的答案很好,我就不回答这个问题了。

372681 次浏览

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

你可以试试这个

 int selectedIndex = myComboBox.getSelectedIndex();

或者

Object selectedObject = myComboBox.getSelectedItem();

或者

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

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

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

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

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

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

可以使用 jdk > = 8进行此操作

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

所以

public void comboBoxitemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
YourObject selectedItem = (YourObject) e.getItem();
//TODO your actitons
}
}

我用这个:

    cb = new JComboBox<String>();
cb.setBounds(10, 33, 46, 22);
panelConfig.add(cb);
for(int i = 0; i < 10; ++i)
{
cb.addItem(Integer.toString(i));
}
cb.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
if(e.getID() == temEvent.ITEM_STATE_CHANGED)
{
if(e.getStateChange() == ItemEvent.SELECTED)
{
JComboBox<String> cb = (JComboBox<String>) e.getSource();
String newSelection = (String) cb.getSelectedItem();
System.out.println("newSelection: " + newSelection);
}
}
}
});