طرق العرض الفرز والتصفية: قائمة الفرز والتصفية GlazedList + JTable vs Glazed Event List + JXTable
-
27-10-2019 - |
سؤال
أريد إنشاء طرق عرض للمستخدم (جداول) مع إمكانات الفرز والتصفية.أستخدم EventList ( القوائم الزجاجية ) كمصدر لـ EventTableModel.هناك أيضًا قائمة مرتبة وبعض عناصر التصفية في GlazedLists ، حتى أتمكن من استخدامها لإنشاء طريقة عرض.لكنني وجدت JXTable ولديه طرق للفرز والتصفية ، وهذه هي الطريقة التي أريد أن يعمل بها: يجب أن يوفر الفرز والتصفية مكونًا لواجهة المستخدم ونموذجًا يمكنه الاحتفاظ بالبيانات فقط: Genacodicetagpre
ولكن توفر GlazedLists أيضًا SortedList (مصمم لقائمة الأحداث مع الفرز) ، وبعض طرق التصفية. Genacodicetagpre
والسؤال هو: ما النموذج الأفضل.أو ربما كلاهما خاطئ ، وما الفائدة من إنشاء طرق العرض؟
المحلول
أصوّت لـ GlazedLists ، لأنها تعمل. نعم ، إن TableModel الذي تستخدمه مع الجدول مقترن بإحكام بالعرض ، ولكنك تفصل نموذج الجدول هذا عن بيانات المصدر.
تعد ميزات الفرز والتصفية في GlazedLists أكثر مرونة من تلك الموجودة في JXTable. فقط تأكد من عدم تشغيل كلاهما ، وإلا ستصبح الأمور مربكة. إليك مقتطف الشفرة المعتاد الخاص بي لاستخدام SortedList مع JXTable:
Genacodicetagpreماذا يفعل هذا:
- شغّل أداة منتقي الأعمدة في الجزء العلوي الأيمن من JXTable
- قم بإيقاف تشغيل الفرز المدمج في JXTable
- تثبيت ميزات الفرز لـ GlazedLists بدلاً من ذلك
- إعداد الجدول باستخدام EventTableModel مشتق من TableFormat
لاحظ أنك تمرر قائمتين من قوائم الأحداث ، وهي عبارة عن قائمة في نهاية خط الأنابيب ، وقائمة مصنفة للتحكم في العمود الذي يتم استخدامه للفرز ، والذي يمكن أن يكون سابقًا في من قائمة العناصر المعروضة. (إذا كان العنصر الأخير الخاص بك هو SortedList ، دون أي معالجة بعد ذلك ، فقط مرر القائمة مرتين.)
نصائح أخرى
في حالة استخدامك لـ DefaultEventTableModel ، فكل شيء على ما يرام.نظرًا لأن النموذج يسجل الفرز على مصدر EventList.يتم ذلك داخليًا كما هو الحال في قائمتك الثانية.في حالة تسجيل أجهزة الفرز يدويًا ، يجب عليك تنفيذ جميع التعليمات البرمجية لتغيير المقارنة (على سبيل المثال ، تصاعدي ، تنازلي).عند محاولة استخدام التصفية ، فإن JXTable imho لا يدعم آلية لذلك ، لذلك عليك القيام بذلك بطريقتك الخاصة.