الاعتراف منسدل إلغاء تحديد عند استخدام نماذج سوينغ +؟

StackOverflow https://stackoverflow.com/questions/613981

سؤال

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top