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

Недавно я искал это самое решение и смог найти простой, не назначая определенные переменные для последнего выбранного элемента и нового выбранного элемента. И этот вопрос, хотя и очень полезный, не обеспечил необходимого мне решения. Это решило мою проблему, я надеюсь, что она решает вашу и других. Спасибо.

Как получить предыдущий или последний элемент?