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

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

DDD
DDDoriginal
2024-10-24 06:01:02315parcourir

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>

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!

Déclaration:
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