كيفية إضافة حدث المستمع إلى عناصر جليست التي تمت إضافتها بواسطة كائن ديفولتليستموديل?

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

سؤال

لقد خلقت 2 جليستس 'أدغروبليست' و 'أدبكليست'.أنا إضافة عناصر إلى أدغروبليست باستخدام نموذج.إضافة (قائمة 1.الحصول على (أريليست1.الحجم () -1));الشيء هو ، أريد تحديث أدبكليست على أساس القيمة المحددة من أدغروبليست.لهذا ، أحاول إضافة مستمع الحدث حتى أتمكن من التصرف بناء على شيء ما عند تحديد عنصر القائمة ولكن الحدث ليس ثلاثي.ماذا أفعل لإنجاز هذا?وفيما يلي رمز أنا باستخدام.

    model1 = new DefaultListModel();
    model2 = new DefaultListModel();

    addApkList = new JList(model1);
    addGroupList = new JList(model2);

    scrollPane1 = new JScrollPane();
    scrollPane1.setViewportView(addApkList);
    scrollPane2 = new JScrollPane();
    scrollPane2.setViewportView(addGroupList);

بهذه الطريقة لقد حددت جليست.في الطريقة التالية لقد أضفت عناصر إلى أدغروبليست

model1.addElement(arrayList1.get(arrayList1.size()-1));

وفي الطريقة التالية أضفت المستمع إليها.

addGroupList.addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent lse) {
            if (!lse.getValueIsAdjusting()) {
              System.out.println("Selection trigerred");
            }
        }
    });

لا يبدو أن هناك أي تغيير مع هذا الرمز.ما الخطأ الذي أفعله?لقد حاولت أيضا التالية

model1.addListDataListener(new ListDataListener() {

            @Override
            public void intervalAdded(ListDataEvent lde) {
                System.out.println("ddddddddddd");
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void intervalRemoved(ListDataEvent lde) {
                System.out.println("ddddddddddd");
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void contentsChanged(ListDataEvent lde) {
                System.out.println("ddddddddddd");
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
        });
هل كانت مفيدة؟

المحلول

في الطريقة التالية لقد أضفت عناصر إلى أدغروبليست

model1.addElement(arrayList1.get(arrayList1.size()-1));

لا لم تفعل. model1 هو نموذج القائمة ل addApkList لا addGroupList:

 addApkList = new JList(model1);

يجب أن يكون model2.addElement(arrayList1.get(arrayList1.size()-1)).

في أي حال أظن أنك تتوقع ل قائمةاختيارالحدث يتم طردك عندما تقوم ببساطة بإضافة عنصر إلى نموذج القائمة.هذا لن يحدث.تحتاج إلى تعيين العنصر المضاف على أنه العنصر المحدد:

Object item = arrayList1.get(arrayList1.size()-1);
model2.addElement(item);
addGroupList.setSelectedValue(item, true);

نلقي نظرة على جيليست.سيتسيليكتدفالو (كائن أنوبجيكت ، منطقية يجب أنكرول) لمزيد من التفاصيل.

نصائح أخرى

لقد قمت بإنشاء 2 Jlists 'addgroplist' و "addapklist".أنا أضيف عناصر إلى addgroplist باستخدام Model.AdDelement (ArrayList1.get (ArrayList1.Size () - 1))؛الشيء هو، أنا ترغب في تحديث AddApklist بناء على قيمة محددة من AddGroplist.ل هذا، أحاول إضافة مستمع الأحداث حتى أتمكن من التصرف شيء عند تحديد عنصر القائمة ولكن الحدث ليس مهزرا. ماذا أفعل لإنجاز هذا؟فيما يلي الرمز الذي أستخدمه.

على سبيل المثال

giveacodicetagpre.

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