فرز الأعداد الصحيحة مع خبير العمود الافتراضي لـ JTable؟

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

سؤال

أنا أستخدم الطريقة التالية على jtable للحصول على نوع تلقائي على الأعمدة

table.setAutoCreateRowSorter(true);

يتيح لي هذا حاليًا النقر فوق كل رأس وسيقوم العمود المقابل بفرز أي شيء بأحرف. إنه يعبث عندما يحاول فرز الأعمدة التي تحتوي على أعداد صحيحة. يبدو أنه يتم فرز كل رقم في وقت واحد بدلاً من الفرز حسب الرقم الفعلي. على سبيل المثال ، سيقول 8 أكبر من 100 لأن 8 أكبر من 1. هل هناك طريقة يمكنني تجاوز هذا السلوك؟

هل كانت مفيدة؟

المحلول

إنها تعبث عندما تحاول فرز الأعمدة التي تحتوي على أعداد صحيحة

من الممكن لأن:

  1. أنت تقوم بتخزين الأرقام كسلاسل ، أو
  2. أنت تقوم بتخزين البيانات ككائن عدد صحيح ولكنك لم تتجاوز getColumnClass() طريقة عودة TableModel الخاصة بك للعودة Integer.class لهذا العمود. سيتم استخدام المقارنة المناسبة فقط عندما تكون فئة الأعمدة صحيحة.

انظر القسم من البرنامج التعليمي المتأرجح المفاهيم: العارضون والمحررين لمزيد من المعلومات ومثال على كيفية تجاوز طريقة getColumnClass ().

نصائح أخرى

ربما تحتاج إلى تعيين خلف صف مع المقارنة المحددة:

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

هنا يمكن العثور على المزيد حول المقارنة والمشاكل المحتملة معها. ولكن ، camickr محق أيضًا في أنه إذا تم تعيين فئة العمود بشكل صحيح ، فلا يجب أن يكون عدد صحيح عادةً ضروريًا.

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