Вопрос

Я пытаюсь вызвать событие всякий раз, когда делается выбор из JComboBox.

У меня проблема в том, что нет очевидного addSelectionListener() метод.

Я пытался использовать actionPerformed(), но он никогда не срабатывает.

Если не считать переопределения модели для JComboBox, у меня закончились идеи.

Как получить уведомление об изменении выбора на JComboBox?**

Редактировать: Я должен извиниться.Оказывается, я использовал некорректный подкласс JComboBox, но я оставлю этот вопрос, так как ваш ответ хороший.

Это было полезно?

Решение

Оно должно реагировать на Слушатели действий, так:

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@Джон Калсбик справедливо отмечает, что addItemListener() тоже будет работать.Вы можете получить 2 ItemEvents, однако один для отмены выбора ранее выбранного элемента, а другой для выбора нового элемента.Просто не используйте оба типа событий!

Другие советы

Пример кода 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());

я бы попробовал itemStateChanged() метод ItemListener интерфейс, если решение Джодоннелла не удастся.

Вот создание 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
        }
    });
}

Вы можете попробовать эти

 int selectedIndex = myComboBox.getSelectedIndex();

-или-

Object selectedObject = myComboBox.getSelectedItem();

-или-

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top