Jcombobox Выбор Изменить Слушателя?


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

проблема, с которой я сталкиваюсь, заключается в том, что нет очевидного addSelectionListener() метод.

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

за исключением переопределения модели для JComboBox У меня закончились идеи.

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

Edit: я должен извиниться оказывается, я был использование неверного подкласса JComboBox, но я оставлю вопрос, так как ваш ответ хорош. Начать голосование. :)

6 130

6 ответов:

Он должен реагировать на ActionListeners, например:

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

@John Calsbeek справедливо указывает, что 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 интерфейс, если решение jodonnell не удается.

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

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

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