الاعتراف منسدل إلغاء تحديد عند استخدام نماذج سوينغ +؟
سؤال
وأنا أحاول أن أكتب واجهة المستخدم الرسومية لطيفة في سوينغ يستخدم النمط الصحيح طراز مندوب قدر الإمكان. لدي 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