добавить ListSelectionListener на JComboBox - PullRequest
1 голос
/ 02 апреля 2011

Я совершенно новичок в Java Swing.И я застрял при попытке добавить ListSelectionListener на JComboBox экземпляр.Кажется, только в интерфейсе ListSelectionModel есть метод addListSelectionListener.Я вроде как не могу понять ...

Почему я хочу добавить, что я хочу, чтобы программа делала что-то, даже если элемент в поле со списком не меняется после выбора.

ПОТЕНЦИАЛЬНЫЙ ОТВЕТ Я просто думал о том, чтобы присоединить actionListener к списку не работает.и я думаю, что это ошибка openjdk.Я сообщил об этом здесь

Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 03 апреля 2011

Посмотрите на JComboBox # addItemListener :

JComboBox combo = createCombo();
combo.addItemListener(new ItemListener()
{
    @Override
    public void itemStateChanged(ItemEvent e)
    {
        if (e.getStateChange() == ItemEvent.SELECTED)
        {
            Object selectedItem = e.getItem();
            // Do something with the selected item...
        }
    }
});

Это событие вызывается как для взаимодействия с мышью, так и с клавиатурой.

2 голосов
/ 02 апреля 2011

Для JComboBox вам придется использовать ActionListener.

    JComboBox jComboBox = new JComboBox();
    jComboBox.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("combobox event");

        }
    });

AFAIK, actionPerformed вызывается всякий раз, когда пользователь делает выбор для JComboBox, даже если это тот же элемент, который уже был выбран.

1 голос
/ 02 апреля 2011

Это зависит от ваших требований. ActionEvent запускается только при использовании клавиатуры, а не при изменении выделения при наведении мыши на элементы.

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

JComboBox comboBox = new JComboBox(...);
BasicComboPopup popup = (BasicComboPopup)comboBox.getAccessibleContext().getAccessibleChild(0);
JList list = popup.getList();
list.addListSelectionListener(...);
0 голосов
/ 03 апреля 2011

Используйте PopupMenuListener. Когда всплывающее меню закрывается, получите выбранный индекс и выполните обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...