Maison > Java > javaDidacticiel > le corps du texte

Comment éviter l'exception « Le lancement de l'application ne doit pas être appelé plus d'une fois » dans JavaFX

DDD
Libérer: 2024-10-24 06:01:02
original
218 Les gens l'ont consulté

How to Avoid

Comment gérer l'exception "Le lancement de l'application ne doit pas être appelé plus d'une fois" en Java

Appeler launch() plus d'une fois dans une application JavaFX n'est pas autorisé. Ceci est explicitement indiqué dans la documentation JavaFX :

Il ne doit pas être appelé plus d'une fois, sinon une exception sera levée.

Suggestion pour afficher périodiquement une fenêtre

Au lieu de plusieurs appels à launch(), suivez ces étapes :

  1. Appelez Application.launch() une fois.
  2. Laissez le runtime JavaFX s'exécuter en arrière-plan à l'aide de Platform. .setImplicitExit(false).
  3. Lorsque vous devez afficher une autre fenêtre, exécutez l'appel window show() dans Platform.runLater() pour vous assurer qu'il est géré par le thread d'application JavaFX.

Exemple de mise en œuvre :

<code class="java">public class MyApplication extends Application {
    private Stage primaryStage;

    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
        primaryStage.setScene(new Scene(new Label("Hello, World!")));
        primaryStage.show();

        // Keep the JavaFX runtime running in the background
        Platform.setImplicitExit(false);
    }

    public void showNewWindow() {
        Platform.runLater(() -> {
            Stage newWindow = new Stage();
            newWindow.setScene(new Scene(new Label("New Window")));
            newWindow.show();
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}</code>
Copier après la connexion

Approches alternatives :

  • Utilisation de JFXPanel : Au lieu d'un Application, vous pouvez utiliser un JFXPanel. Cependant, le modèle d'utilisation reste similaire.
  • Utilisation de Platform.startup() : Java 9 a introduit Platform.startup() pour déclencher l'exécution JavaFX sans classe d'application ni appel launch(). Des restrictions similaires s'appliquent à celles de launch().

Conclusion (facultatif) :

En adhérant à ces directives, vous pouvez éviter le message « Le lancement de l'application ne doit pas Soyez appelé plus d'une fois" et affichez périodiquement les fenêtres dans votre application JavaFX.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!