问题
I'm trying to get an event to fire whenever a choice is made from a JComboBox
.
The problem I'm having is that there is no obvious addSelectionListener()
method.
I've tried to use actionPerformed()
, but it never fires.
Short of overriding the model for the JComboBox
, I'm out of ideas.
How do I get notified of a selection change on a JComboBox
?**
Edit: I have to apologize. It turns out I was using a misbehaving subclass of JComboBox
, but I'll leave the question up since your answer is good.
回答1:
It should respond to ActionListeners, like this:
combo.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
doSomething();
}
});
@John Calsbeek rightly points out that addItemListener()
will work, too. You may get 2 ItemEvents
, though, one for the deselection of the previously selected item, and another for the selection of the new item. Just don't use both event types!
回答2:
Code example of ItemListener
implementation
class ItemChangeListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
Object item = event.getItem();
// do something with object
}
}
}
Now we will get only selected item.
Then just add listener to your JComboBox
addItemListener(new ItemChangeListener());
回答3:
I would try the itemStateChanged()
method of the ItemListener interface if jodonnell's solution fails.
回答4:
Here is creating a ComboBox adding a listener for item selection change:
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
}
});
}
回答5:
You may try these
int selectedIndex = myComboBox.getSelectedIndex();
-or-
Object selectedObject = myComboBox.getSelectedItem();
-or-
String selectedValue = myComboBox.getSelectedValue().toString();
回答6:
I was recently looking for this very same solution and managed to find a simple one without assigning specific variables for the last selected item and the new selected item. And this question, although very helpful, didn't provide the solution I needed. This solved my problem, I hope it solves yours and others. Thanks.
How do I get the previous or last item?
来源:https://stackoverflow.com/questions/58939/jcombobox-selection-change-listener