English 中文(简体)
使用Swing +模型时识别复选框取消选择?
原标题:
  • 时间:2009-03-05 08:35:07
  •  标签:

我正在尝试使用Swing编写一个漂亮的GUI,并尽可能多地使用适当的模型委托模式。我有一个JComboBox,当它更改时,需要使用新数据更新模型。为了获取当前选定的项目,我正在使用:

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

哪个返回更改后的数据的对象。然而,我找不到一种方法来找出旧值,因此我不知道需要更改哪个对象。这里有什么想法吗?

最佳回答

ended up not going to the model at all but getting my object from the getItem method like so:

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());
    }
}

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

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





相关问题
热门标签