عرض Jwindow في الحدث إرسال الخيط
-
28-09-2019 - |
سؤال
ما أحاول القيام به هو ظهور شاشة رش صغيرة بينما يقوم برنامجي بتحميل شيء ما. هذا ما لدي:
SplashScreen.showSplashScreen();
// Do stuff that takes time.
SplashScreen.hideSplashScreen();
جميع طريقة SimplashScreen () تقوم بإنشاء Jwindow جديد في منتصف الشاشة وجعلها مرئية.
الآن يتم استدعاء هذا الرمز من مؤشر ترابط إرسال الحدث ، لذلك عندما يتم استدعاء طريقة SimplashScreen () ، لا يمكنني رؤية Jwindow حتى ينتهي الخيط ، والتي لم أعد بحاجة إلى النافذة بعد الآن. ما هي أفضل طريقة للذهاب إلى إظهار شاشة البداية أثناء الانتظار؟
المحلول
لست متأكدًا مما إذا كانت هذه هي "أفضل طريقة" ، ولكن الآلية التي استخدمتها من قبل هي القيام بالتوضيح الخاص بك على مؤشر ترابط آخر غير EDT ، ولكن أظهر شاشة البداية الخاصة بك باستخدام SwingUtilities.invokeAndWait
. وبهذه الطريقة ، ستحصل على الأقل على شاشة الرش حتى لو كان التهيئة سريعة (إذا كان هذا ما تريد حدوثه).
لذلك في موضوع init الخاص بك ، تذهب:
SwingUtilities.invokeAndWait( /* Runnable to show splash screen */ );
// Do stuff that takes time.
SwingUtilities.invokeLater( /* Hide splash screen, display main GUI */ );
نصائح أخرى
هناك java.awt.SplashScreen
الفصل الذي تم تقديمه في 1.6 ، حاول استخدام ذلك؟