طرق العرض الفرز والتصفية: قائمة الفرز والتصفية GlazedList + JTable vs Glazed Event List + JXTable

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

سؤال

أريد إنشاء طرق عرض للمستخدم (جداول) مع إمكانات الفرز والتصفية.أستخدم 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 لا يدعم آلية لذلك ، لذلك عليك القيام بذلك بطريقتك الخاصة.

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