هل يمكنني تشغيل 2 إجراءات واجهة المستخدم الرسومية في EDT؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

في jdialog ، عندما ينقر المستخدم على jbutton ، أريد تنفيذ إجراءات واجهة المستخدم الرسومية 2 في EDT:

  1. إظهار jdialog صغير آخر مع أيقونة مزدحمة فيه لإخبار المستخدم "يرجى الانتظار بينما تنتهي العملية الخاطئة".
  2. إدخال عدد كبير من السجلات في JTable.

عندما أحاول تنفيذ كلا الإجراءين ، يقوم مربع حوار "الرجاء الانتظار" بحظر عملية الإدراج ، كما هو متوقع.

كما ترى كلا الإجراءين يجب أن يتم في EDT ... لذلك هل هناك حل لهذا ؟

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

المحلول

لا ، لا ينبغي تنفيذ كلا الإجراءين في EDT.

لا ينبغي إدراج سجلاتك في JTable ، ولكن في توسيعه ، مما يؤدي إلى تحديث الأحداث. وبهذه الطريقة ، يمكنك بسهولة تحديث الجدول أثناء عرض مربع الحوار.

بمجرد تحديث نموذج الجدول ، قم بإطلاق حدث لضمان إعادة طلاء الجدول ، وسيعمل.

نصائح أخرى

الشيء الثاني لا يلزم القيام به في EDT. تفرخ خيط لإضافة العناصر إلى طراز JTable ، ولكن اجعل هذا الخيط يستخدم من حين لآخر Swingworker.invokelater () لإطلاق الأحداث "FireTabledatachanged".

معظم لوحات tablemodels ، على سبيل المثال DefaultTableModel ، تستدعي أساليب Firexxx بمجرد تحديث النموذج ، لذا نعم ، تريد تحديث النموذج على EDT بحيث يتم إعادة طلاء الجدول بشكل صحيح.

"يرجى الانتظار بينما تنتهي العملية الخاطئة".

استخدم غير محدد jprogressbar

ثم يمكنك تحديث النموذج كما هو مطلوب بدون قفل.

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