"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إنشاء عدة نوافذ JavaFX دون استدعاء الإطلاق ()؟

كيفية إنشاء عدة نوافذ JavaFX دون استدعاء الإطلاق ()؟

تم النشر بتاريخ 2024-11-09
تصفح:850

How to Create Multiple JavaFX Windows without Recalling launch()?

كيفية استدعاء الإطلاق () أكثر من مرة في Java

تم تصميم طريقة تشغيل تطبيق JavaFX، إطلاق ()، ليتم استدعاؤها مرة واحدة فقط لكل طلب. تؤدي محاولة استدعاء Launch() أكثر من مرة إلى حدوث خطأ "IllegalStateException".

الحل: التفاف إنشاء النافذة اللاحقة في Platform.runLater()

بدلاً من الاتصال Launch() عدة مرات، فكر في الطريقة التالية:

    اتصل بـ Launch() مرة واحدة لتهيئة وقت تشغيل JavaFX وإنشاء النافذة الرئيسية.
  1. حافظ على تشغيل وقت تشغيل JavaFX في الخلفية باستخدام Platform.setImplicitExit (خطأ). وهذا يمنع JavaFX من إيقاف التشغيل تلقائيًا عند إغلاق النافذة الرئيسية.
  2. عندما تحتاج إلى عرض نافذة جديدة، قم بتغليف إنشائها وعرضها في كتلة Platform.runLater(). وهذا يضمن تنفيذ عمليات JavaFX على مؤشر ترابط التطبيق.

مثال على الكود:

public class Wumpus extends Application {
    private static final Insets SAFETY_ZONE = new Insets(10);
    private Label cowerInFear = new Label();
    private Stage mainStage;

    @Override
    public void start(final Stage stage) {
        mainStage = stage;
        mainStage.setAlwaysOnTop(true);
        Platform.setImplicitExit(false);
        cowerInFear.setPadding(SAFETY_ZONE);

        cowerInFear.setOnMouseClicked(event -> Platform.exit());
        stage.setScene(new Scene(cowerInFear));
    }

    public static void main(String[] args) {
        launch(args);

        // Another window can be created here by wrapping its creation
        // and display in a Platform.runLater() block.
        Platform.runLater(() -> {
            Stage newStage = new Stage();
            newStage.setScene(new Scene(new Label("Another Window")));
            newStage.show();
        });
    }
}

ملاحظة:

توضح فئة Wumpus أعلاه النهج مع تطبيق JavaFX مخصص.
  • للاستخدام مع مكونات Swing، أ يمكن استخدام JFXPanel بدلاً من التطبيق.
  • سيؤدي استدعاء Platform.exit() إلى إنهاء وقت تشغيل JavaFX، لذلك من المهم استدعاء هذا الأسلوب عند اكتمال جميع عمليات JavaFX.
بيان الافراج أعيد طبع هذه المقالة على: 1729695676 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3