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
Libérer: 2024-11-03 01:36:29
original
748 Les gens l'ont consulté

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>
Copier après la connexion

ImportController.java

<code class="java">...
private WebImporter importer;
...</code>
Copier après la connexion

WebImporter.java

<code class="java">...
private final TextArea textArea;
...</code>
Copier après la connexion

TextLoggingSample.java ( point d'entrée)

<code class="java">...
Parent root = loader.load(
    getClass().getResourceAsStream(
            "Root.fxml"
    )
);
...</code>
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal