جافا: jtable إعادة ترتيب الصفوف والتحديث
-
18-09-2019 - |
سؤال
انا املك JTable
(الموسعة) وتنفيذ TableModel
, ، حيث لدي أساليب ...
moveEntryUp(int rowIdx)
moveEntryDown(int rowIdx)
... ضمن تنفيذ نموذج الطاولة. لقد تحققت من أن هذه العمل بشكل صحيح.
ومع ذلك، أواجه مشاكل في الحصول على التغييرات التي تم إجراؤها في نموذج الطاولة للنشر إلى الفعلي JTable
. وبعد في هذا الجدول، اسمح فقط باختيار صف واحد، ولديه زر منفصل فوق و أسفل. وبعد عندما يتم انتخاب صف، أحتاج إلى أن أكون قادرا على نقل هذا الصف لأعلى ولأسفل، و الحفاظ على الاختيار.
على سبيل المثال
إذا كانت صفوفي [A, B, C(selected)]
, ، وأنا اضغط على زر UP،
ينبغي أن أحصل على [A, C(selected), B]
.
من الأساليب المختلفة التي جربتها حتى الآن تفشل إما في تحديث القيم في JTable، أو تفقد التحديد.
ملاحظة:
أنا متردد في استخدام حل يتطلب مكالمة صريحة repaint()
.
افترض أن جميع الخلايا في JTable
نكون ليس قابل للتعديل.
المحلول
الإجابة على السؤال الخاص:
int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);
أين mTable
هو JTable، و mTableModel
هو تطبيق نموذجي طاولتي، وهو ما يعادل mTable.getModel()
(و typecast).
يجب أن أكون مضاعفا لفترة أطول قبل أن يسأل!