JComboBox Выбор слушателя?
Я пытаюсь запустить событие, когда выбор сделан из JComboBox
.
Проблема, с которой я сталкиваюсь, заключается в том, что нет очевидного метода addSelectionListener()
.
Я пытался использовать actionPerformed()
, но он никогда не срабатывает.
За исключением переопределения модели для JComboBox
У меня нет идей.
Как получить уведомление об изменении выбора на JComboBox
?
Изменить: Я должен извиниться, что оказалось, что я использовал недопустимый подкласс JComboBox
, но я оставлю вопрос, потому что ваш ответ хорош. Примите участие в голосовании.:)
Ответы
Ответ 1
Он должен ответить ActionListeners, например:
combo.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
doSomething();
}
});
@John Calsbeek справедливо указывает, что addItemListener()
тоже будет работать. Вы можете получить 2 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());
Ответ 3
Я пытаюсь использовать метод itemStateChanged()
ItemListener
, если решение jodonnell не работает.
Ответ 4
Вы можете попробовать эти
int selectedIndex = myComboBox.getSelectedIndex();
-или -
Object selectedObject = myComboBox.getSelectedItem();
-или -
String selectedValue = myComboBox.getSelectedValue().toString();
Ответ 5
Здесь создается 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
}
});
}
Ответ 6
Недавно я искал это самое решение и смог найти простой, не назначая определенные переменные для последнего выбранного элемента и нового выбранного элемента. И этот вопрос, хотя и очень полезный, не обеспечил необходимого мне решения. Это решило мою проблему, я надеюсь, что она решает вашу и других. Спасибо.
Как получить предыдущий или последний элемент?