Выполнение действия над JComboBox — SwingUI

Я реализовал ComboBox с помощью NetBeans со списком значений, я хочу иметь возможность выполнять действие всякий раз, когда изменяется выбранный индекс. Например, когда пользователь меняет текущий элемент с элемента 1 на элемент 2.


person Jamie Keeling    schedule 04.05.2011    source источник
comment
Все, что вам нужно сделать, это прочитать JComboBox API, и вы найдете ссылку на учебник Swing о том, как использовать поля со списком. API — это первое, с чего нужно начать.   -  person camickr    schedule 04.05.2011
comment
Думаю, мой поиск foo отключен, спасибо за указатель!   -  person Jamie Keeling    schedule 04.05.2011


Ответы (1)


Вот пример использования из Руководства по Java. :

public class ComboBoxDemo ... implements ActionListener {
    . . .
        petList.addActionListener(this) {
    . . .
    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        String petName = (String)cb.getSelectedItem();
        updateLabel(petName);
    }
    . . .
}

Изменить:

An ActionListener is

Интерфейс прослушивателя для получения событий действий. Класс, который заинтересован в обработке события действия, реализует этот интерфейс, а объект, созданный с помощью этого класса, регистрируется в компоненте с помощью метода addActionListener этого компонента. Когда происходит событие действия, вызывается метод actionPerformed этого объекта.

Редактировать 2:

Вот еще один пример использования, отвечающий требованиям kleopatra, то есть тот, который лучше всего подходит:

JComboBox yourComboBox = new JComboBox();
yourComboBox.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // do stuff
    }
});
person mre    schedule 04.05.2011
comment
Не могли бы вы пояснить, как работает ActionListener? Запускается ли он при любом взаимодействии с ComboBox или вы можете использовать параметр, переданный в метод actionPerformed? Чтобы уточнить, я тестировал и заметил, что это работает, когда я выбираю новый элемент, можно ли его расширить, если я хочу, чтобы он срабатывал в другом событии? Извините, я привык к обработке событий C# - person Jamie Keeling; 04.05.2011
comment
Прочитайте учебник. Ответ был опубликован 3 минуты назад. Вы не могли прочитать учебник, загрузить пример и протестировать его, прежде чем запрашивать дополнительную информацию. - person camickr; 04.05.2011
comment
-1 за реализацию ActionListener в самой демонстрации (предоставляет общедоступный API, который не предназначен для использования). Вместо этого используйте внутренний ActionListener - person kleopatra; 04.05.2011
comment
@kleopatra: серьезно? это было взято НЕПОСРЕДСТВЕННО из Учебников по Java. если у вас есть проблемы с этим ответом, почему бы не проконсультироваться с людьми, которые разработали пример? шиш... - person mre; 04.05.2011
comment
они невосприимчивы к предложениям ;-) В любом случае, то, что они делают что-то неправильно, не оправдывает любые скопированные фрагменты, которые не фильтруются с помощью передового опыта. - person kleopatra; 04.05.2011
comment
@kleopatra: вздох ... Думаю, ты прав :). при этом я предоставил лучший пример использования. ценю критику. - person mre; 04.05.2011