1

適切な Model-Delegate パターンを可能な限り使用する素敵な GUI を Swing で作成しようとしています。変更時にモデルを新しいデータで更新する必要がある JComboBox があります。現在選択されているアイテムを取得するには、次を使用しています。

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

これは、データが変更されたものを素敵なオブジェクトとして返します。しかし、古い値を見つける方法が見つからないため、どのオブジェクトを変更する必要があるのか​​ わかりません。ここに何かアイデアはありますか?

4

3 に答える 3

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

于 2009-03-06T05:46:50.280 に答える
1
Foo oldFoo;
....
fooCombo.addItemListener(new ItemListener() {
    public void itemStateChanged(final ItemEvent arg0) {
        Foo newFoo = (Foo) fooModel.getSelectedItem();
        fooChangedHandler(oldFoo, newFoo);
        oldFoo = newFoo;
    }
});
于 2009-03-05T10:19:37.027 に答える
0

デフォルトの ComboBoxModel と ItemEvent では以前に選択した値を取得できないため、この機能を使用して独自の ComboBoxModel を実装できます。

于 2009-03-05T09:52:39.540 に答える