كيفية إضافة حدث المستمع إلى عناصر جليست التي تمت إضافتها بواسطة كائن ديفولتليستموديل?
-
21-12-2019 - |
سؤال
لقد خلقت 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.