0
votes

java.lang.nullpointereException Lorsque vous essayez d'obtenir le texte d'un champ de texte dans MAINAPApp lorsque l'application ferme

Je suis nouveau à JavaFX et j'essaie d'obtenir la valeur d'un champ de texte lorsque ma demande se ferme, j'ai donc utilisé

System.out.println(textField.getText());


0 commentaires

3 Réponses :


2
votes

Vous devez exécuter charger () code> avant d'obtenir le contrôleur.

Essayez ce code: P>

FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml"));
loader.load();
FXMLController controllerClass = loader.getController();
controllerClass.getTextFieldValue();
System.out.println("closing");


4 commentaires

la nullpointerException désapperrée mais le gettextfieldValue imprime une chaîne vide même s'il y a une chaîne dans le champ de texte


Votre question initiale ne semble pas fournir suffisamment de contexte pour que je réponde à cette question. Par exemple, quel est la méthode de Textfield dans votre méthode GetTextFieldValue ()?


Merci beaucoup pour l'aide et la réponse rapide, @FXML Textfield Textfield; Est-ce que le champ de texte est-ce que je veux obtenir le texte lorsque je ferme ma demande.


Ma suggestion serait de vérifier que vous obtenez le bon champ de texte cika celui qui correspond à celui que vous souhaitez obtenir le texte.



0
votes

Avez-vous oublié d'ajouter fx: id code> dans votre scène.fxml code>? Veuillez fournir un autre exemple de votre code. Je ne sais pas ce qui se passe dans votre fichier fxml code>. Je pense qu'il peut y avoir une sorte de code XML manquant.

Bien que je ne sache pas ce que vous essayez d'atteindre, mais je pense qu'il est plus facile et correct de le faire. P>

FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml")));
loader.setController(new FXMLController()); // you can not get controller, unless you set it first
FXMLController controllerClass = loader.getController();
controllerClass.getTextFieldValue();


1 commentaires

Merci pour l'aide, le FX: ID est correct, mon seul problème est maintenant que je ne peux pas obtenir la valeur actuelle du champ de texte. Son imprimant toujours une chaîne vide.



0
votes
  • Pour supprimer la nullpointException Première exécution Charger () Avant d'obtenir le contrôleur.
  • Pour obtenir la valeur du champ de texte lors de la fermeture de l'application, j'ai utilisé la classe Préférences de Java.Util.PRefs pour enregistrer le contenu du Textfield, puis je remplacerai la méthode stop () Mon MainApp et récupéré la valeur sauvegardée dedans.

    Pas sûr que c'est la meilleure façon de le faire, mais cela a fonctionné pour moi, merci pour toute l'aide.


0 commentaires