Jcombobox - подписаться на событие selectedItemChanged

Я пытаюсь выполнить действие всякий раз, когда изменяется выбранный элемент в поле со списком. один конкретный сценарий, когда прослушиватель действий не уведомлен, - это когда вы сбрасываете модель в поле со списком. Я могу подписаться с другим PropertyChangedListener и слушать, когда изменяется модель, а затем извлекать выбранный элемент, но я просто не понимаю, почему событие изменения выбранного элемента не возникает при изменении модели. визуально ваш выбор меняется, даже если вы запрашиваете cobox для выбранного элемента, он меняется с null на какой-то объект... Любое четкое решение для этого, а не использование двух отдельных слушателей?


person Bober02    schedule 04.12.2012    source источник
comment
Вы пытались использовать прослушиватель элементов вместо прослушивателя действий?   -  person Jakub Zaverka    schedule 04.12.2012


Ответы (1)


Если прослушиватели действий и элементов не запускают события при сбросе модели, вы можете запустить это событие самостоятельно, создав подкласс JComboBox:

public class MyComboBox extends JComboBox 
{
    @Override
    public void setModel(ComboBoxModel aModel) {
        super.setModel(aModel);
        fireActionEvent();
    }
}

Но ИМХО это ошибка - вы должны сообщить об этом официальному багзилле.

person Jakub Zaverka    schedule 04.12.2012
comment
это подойдет, но я думаю, что я буду придерживаться обычного свойстваChangedListenr - person Bober02; 04.12.2012