Listening for Action Events from a JComboBox Component
Action events are generated whenever the selected item changes. These
events are generated even while the user is moving through items in
the displayed popup menu. Unlike item events (see
Listening for Changes to the Selected Item in a JComboBox Component), action events are
generated even if the new item is the same as the old item.
// Create component
String[] items = {"item1", "item2"};
JComboBox cb = new JComboBox(items);
cb.setEditable(true);
// Create and register listener
MyActionListener actionListener = new MyActionListener();
cb.addActionListener(actionListener);
class MyActionListener implements ActionListener {
// Retain the previously selected item in order to determine whether
// the new item is the same
Object oldItem;
// This method is called whenever the user or program changes the selected item.
// Note: The new item may be the same as the previous item.
public void actionPerformed(ActionEvent evt) {
JComboBox cb = (JComboBox)evt.getSource();
// Get the new item
Object newItem = cb.getSelectedItem();
// Determine if different from previously selected item
boolean same = newItem.equals(oldItem);
oldItem = newItem;
if ("comboBoxEdited".equals(evt.getActionCommand())) {
// User has typed in a string; only possible with an editable combobox
} else if ("comboBoxChanged".equals(evt.getActionCommand())) {
// User has selected an item; it may be the same item
}
}
}
Post a comment