Swing +モデルを使用するときにコンボボックスの選択解除を認識しますか?
質問
可能な限り適切なModel-Delegateパターンを使用するSwingで素敵なGUIを作成しようとしています。変更された場合、新しいデータでモデルを更新する必要があるJComboBoxがあります。現在選択されているアイテムを取得するために、私は使用しています:
fooCombo.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent arg0) {
fooChangedHandler((Foo) fooModel.getSelectedItem());
}
});
データが変更されたものを素敵なオブジェクトとして返します。ただし、古い値を見つける方法が見つからないため、どのオブジェクトを変更する必要があるかわかりません。ここにアイデアはありますか?
解決
モデルにはまったく行かずに、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());
}
}
他のヒント
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を実装できます。
所属していません StackOverflow