Maison >Java >javaDidacticiel >Pourquoi ma classe de contrôleur JavaFX ne fonctionne-t-elle pas ?

Pourquoi ma classe de contrôleur JavaFX ne fonctionne-t-elle pas ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 01:36:29755parcourir

Why is my JavaFX Controller Class not working?

La classe de contrôleur JavaFX ne fonctionne pas

Le code fourni s'interface avec une TextArea sous forme de journal. L'objectif est de mettre à jour le contenu de TextArea à partir d'une classe distincte si nécessaire. Cela nécessite la création d’une classe de contrôleur qui étend Initialisable. Cependant, l'implémentation du contrôleur ne fonctionne pas correctement.

Solution

Le code présente un problème fondamental : la classe Application est utilisée comme contrôleur. Cette pratique est déconseillée car :

  • Il ne devrait y avoir qu'une seule instance d'application, mais le chargeur crée souvent plusieurs instances.
  • Le référencement des objets membres du contrôleur peut prêter à confusion, car ils diffèrent par leur disponibilité des champs entre l'application lancée et l'instance d'application créée par le chargeur.

De plus, il est recommandé de compléter les fonctionnalités de base de l'interface utilisateur avant d'implémenter le multithreading.

Code révisé

Voici le code corrigé utilisant des classes distinctes pour le contrôleur, l'importateur Web et l'exemple de journalisation de texte :

Root.fxml

<code class="xml">...
fx:controller="textlogger.ImportController"
...</code>

ImportController.java

<code class="java">...
private WebImporter importer;
...</code>

WebImporter.java

<code class="java">...
private final TextArea textArea;
...</code>

TextLoggingSample.java ( point d'entrée)

<code class="java">...
Parent root = loader.load(
    getClass().getResourceAsStream(
            "Root.fxml"
    )
);
...</code>

Conclusion

En séparant la classe du contrôleur et en utilisant l'approche appropriée pour le multi-threading, l'application peut désormais mettre à jour avec succès la TextArea à partir d'un classe séparée.

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