распознать отмену выделения в выпадающем списке при использовании моделей Swing +? - PullRequest
1 голос
/ 05 марта 2009

Я пытаюсь написать хороший графический интерфейс на Swing, который максимально использует правильный шаблон Model-Delegate. У меня есть JComboBox, который при изменении должен обновить модель с новыми данными. Чтобы получить выбранный предмет, я использую:

fooCombo.addItemListener(new ItemListener() {
    public void itemStateChanged(final ItemEvent arg0) {
        fooChangedHandler((Foo) fooModel.getSelectedItem());
    }
});

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

Ответы [ 3 ]

2 голосов
/ 06 марта 2009

закончилось тем, что я вообще не пошел в модель, а получил свой объект из метода getItem следующим образом: public void itemStateChanged(final ItemEvent event) { if (event.getStateChange() == event.DESELECTED) { deselectedFoo = (Foo) event.getItem(); } else if (event.getStateChange() == event.SELECTED) { FooChangedHandler(deselectedFoo,(Foo) event.getItem()); } }

1 голос
/ 05 марта 2009
Foo oldFoo;
....
fooCombo.addItemListener(new ItemListener() {
    public void itemStateChanged(final ItemEvent arg0) {
        Foo newFoo = (Foo) fooModel.getSelectedItem();
        fooChangedHandler(oldFoo, newFoo);
        oldFoo = newFoo;
    }
});
0 голосов
/ 05 марта 2009

Поскольку ComboBoxModel и ItemEvent по умолчанию не позволяют получить ранее выбранное значение, вы можете реализовать собственную ComboBoxModel с этой функцией.

...