Comment vérifier si le champ est vide?
pour mon application JavaFx. je veux vérifier si les objets textfield sont vides, et le cas échéant, alerter l'utilisateur.
Ce sont les objets textfield:
VBox fields = new VBox();
Text usernametext = new Text("User name");
TextField user_name = new TextField();
Text firstnametext = new Text("First name");
TextField first_name = new TextField();
Text lastnametext = new Text("Last name");
TextField last_name = new TextField();
Text ibantext = new Text("IBAN");
TextField iban = new TextField();
Text passwordtext = new Text("Password");
TextField password = new TextField();
Text confirmpasstext = new Text("Confirm password");
TextField confirmpass = new TextField();
Button createBtn = new Button("Create account");
pour l'instant, je voulais juste tester la validation sur un textfield. c'est ma fonction de validation qui est liée à la createBtn:
public void validation(){
if(user_name.getText().trim().isEmpty()){
Alert fail= new Alert(AlertType.INFORMATION);
fail.setHeaderText("failure");
fail.setContentText("you havent typed something");
fail.showAndWait();
} else {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setHeaderText("Succes");
alert.setContentText("Account succesfully created!");
alert.showAndWait();
}
}
Mais je reçois ce message d'erreur que j'appuie sur 'Créer un Compte' bouton:
Exception in thread "JavaFX Application Thread"
java.lang.NullPointerException
at opdracht1.Opdracht1.validation(Opdracht1.java:36)
at opdracht1.Opdracht1$2$1.handle(Opdracht1.java:103)
at opdracht1.Opdracht1$2$1.handle(Opdracht1.java:98)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8411)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$355(GlassViewEventHandler.java:388)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)
Merci d'avance!
Pouvez-vous nous dire qui la ligne 36 de
si(user_name.getText().trim().isEmpty()){
Ensuite, il est prévu que le user_name est null. Vérifiez votre code à l'endroit où vous pouvez le configurer à null, ou vous pouvez avoir plusieurs variables avec le même nom.
une façon de le faire avec les regex (!inputField.getText().correspond à(" {" +inputField.getText().length() + "}");) juste une petite info.
Opdracht1.java
?si(user_name.getText().trim().isEmpty()){
Ensuite, il est prévu que le user_name est null. Vérifiez votre code à l'endroit où vous pouvez le configurer à null, ou vous pouvez avoir plusieurs variables avec le même nom.
une façon de le faire avec les regex (!inputField.getText().correspond à(" {" +inputField.getText().length() + "}");) juste une petite info.
OriginalL'auteur user3660293 | 2015-09-30
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vérifiez si
user_name
n'est pas null. Si elle n'est pas, vous définissez un null valeur de texte à la JavaFX élément quelque part dans votre code.Dans tous les cas, l'application de la
trim()
à un null valeur est ce qui provoque une exception. Vous ne devriez pas avoir besoin de cela (voir Uluk Biy'commentaire à cette réponse), mais vu que vous avez créé unuser_name
TextField, vous devez d'abord vérifier si legetText()
méthode n'est pas null.Quelque chose comme cela devrait faire l'affaire:
user_name.getText()
ne peut pas être nulle parce que le constructeur par défaut de laTextField
définit le texte initial "" (chaîne vide).Tout à fait raison. Toutefois, il doit définir une valeur null quelque part dans le programme; c'est la seule façon d'obtenir un pointeur null dans la ligne.
"" est défini sur texte si l'argument passé pour setText() est nulle. donc getText() a veillé à ne pas retourner la valeur null de toute façon. NPE se produit si user_name est aussi nulle pour la ligne donnée.
user_name.setText(null); Assert.assertNotNull(user_name.getText());
Vérifier ce point. Il lance un AssertionFailedError, ce qui signifie le texte retourné par la méthode de la valeur est null. Je suis en train de modifier la réponse, l'ajout de la possibilité que user_name peut également être null.Vous êtes de droite. Il semble qu'il y a un indicateur pour indiquer que le texte nullness. Mais la valeur réelle de la propriété text jeux "de".
OriginalL'auteur Alexander Ortiz
vous pouvez utiliser le Bouton disableProperty à se lier avec les TextField. lorsque le champ est vide, le bouton sera désactivé, sinon, il sera activé.
utiliser le code mentionné ci-dessous
OriginalL'auteur Prayag Sharma
Bon, c'est la façon dont je l'ai fait et ça fonctionne.
Si dans le cas aucun des travaux ci-dessus, essayez les solutions suivantes:
Créer une variable de type chaîne, disons String username;
Ensuite, essayez les solutions suivantes:
La suggestion n'a pas fonctionné pour moi, mais de la création de la chaîne de fait, si les suggestions ci-dessus ne fonctionne pas pour vous, donner un coup de cette.
if(username.getText().trim().isEmpty())
OriginalL'auteur reece8765
Ce qui peut être contrôlé simplement par
OriginalL'auteur Shersha Fn
textField.getText().trim().equals("")
Déclaration ci-dessus a fonctionné comme un charme pour moi.
OriginalL'auteur AnkUser
Vous pouvez tester ce code de remplacer le Nom de mes champs avec le nom de votre TextFeild
OriginalL'auteur AnouarLouardighi