pour mon application JavaFx, je souhaite vérifier si les champs de texte sont vides et, le cas échéant, avertir l'utilisateur ..__
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 champ de texte. Voici ma fonction de validation qui est liée à la commande 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 lorsque j'appuie sur le bouton "Créer un compte":
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!
Bon, c'est comme ça que je l'ai fait et ça marche.
Si, dans le cas contraire, cela ne fonctionne pas, essayez ce qui suit:
Créez une variable de chaîne, disons String nom d'utilisateur; Ensuite, essayez ce qui suit:
if(username.trim().isEmpty())
La suggestion initiale ne fonctionnait pas pour moi, mais la création de la chaîne ne fonctionnait pas. Si les suggestions ci-dessus ne vous convenaient pas, essayez-le.
vous pouvez utiliser Button disableProperty pour établir une liaison avec TextField. lorsque le champ de texte est vide, le bouton est désactivé, sinon il est activé.
utiliser le code mentionné ci-dessous
createBtn.disableProperty().bind(
Bindings.createBooleanBinding( () ->
user_name.getText().trim().isEmpty(), user_name.textProperty()
)
// If you want to check more text field, use it as by removing comments
//.or( Bindings.createBooleanBinding(
// first_name.getText.trim().isEmpty(), first_name.textProperty()
// )
// )
);
Ceci peut être vérifié simplement par
if(textField.getText().trim().equals(""))
{
system.out.println("textField is empty");
}
textField.getText (). trim (). égal à ("")
La déclaration ci-dessus a fonctionné comme un charme pour moi.