使用Swing +模型时识别组合框取消选择?

时间:2009-03-05 08:35:08

标签: java swing events model jcombobox

我正在尝试在Swing中编写一个很好的GUI,尽可能使用正确的Model-Delegate模式。我有一个JComboBox,当更改时,需要使用新数据更新模型。要获取当前选定的项目,我正在使用:

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

返回将数据更改为一个好的Object。但是,我找不到找出旧值的方法,所以我不知道哪个对象需要更改。这里有什么想法吗?

3 个答案:

答案 0 :(得分:2)

最终没有去模型,只是从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 :(得分:1)

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

答案 2 :(得分:0)

由于默认的ComboBoxModel和ItemEvent不允许您获取之前选择的值,因此您可以使用此功能实现自己的ComboBoxModel。