سؤال

هناك JTabbedPane في يتأرجح برنامج. عندما ينقر المستخدم على علامة تبويب ، يستغرق البرنامج بعض الوقت للحصول على البيانات ومعالجة النتائج ، ثم يعرض النتائج في علامة التبويب المحددة.

كيف يمكنني عرض ساعة من الزجاج ، أو شيء من هذا التأثير هل يعرف المستخدم أنه يقوم بمعالجة البيانات؟ عدم النقر فوق علامة التبويب مرة أخرى قبل أن تنتهي من الوظيفة.

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

المحلول

أ JProgressbar (ربما في وضع Indetermiante) يبدو صحيحًا - ضع ذلك في علامة التبويب حتى يتم جلب البيانات. يجب ألا يجبر واجهة المستخدم المصممة جيدًا على المستخدم على انتظار إكمال المهام طويلة الأمد والسماح لهم بدلاً من ذلك بالقيام بشيء آخر بينهما.

نصائح أخرى

أبسط طريقة هي الاتصال فقط setCursor على المكون المناسب (ربما النافذة ذات المستوى الأعلى) مع المناسبة المؤشر.

component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

ثم أعدها عند الانتهاء.

component.setCursor(Cursor.getDefaultCursor());

يتم إهمال setCursor (int). ربما يكون هذا أكثر نظافة:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

كما ذكرت الإجابات الأخرى ، يمكنك تعيين مؤشر الانتظار ، لكنك تذكر أيضًا منع نقرات فأر إضافية. يمكنك استخدام جزء زجاجي لمنع النقرات على المكونات حتى يتم الانتهاء من العملية الطويلة. بالإضافة الى دروس الشمس على الجزء الزجاجي ، هناك مثال لطيف في http://www.java2s.com/code/java/swing-jfc/demonstrateuseofglasspane.htm

أود أن أذكر آخر

  • تغيير المؤشر
  • استخدم Workworker
  • عرض شريط التقدم أو صورة متحركة في Glasspane
  • إخفاء Glasspane عند اكتمال المهمة
  • استعادة المؤشر الافتراضي
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top