it-swarm.com.ru

Как проверить, является ли текстовое поле пустым?

для моего приложения JavaFx я хочу проверить, являются ли TextFields пустыми, и если это так, предупредить пользователя . Это TextFields: 

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");

сейчас я просто хотел проверить валидацию в одном текстовом поле. это моя функция проверки, которая связана с 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();
    }
}

Но я получаю это сообщение об ошибке, когда нажимаю кнопку «Создать учетную запись»: 

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)

Заранее спасибо!

7
user3660293

Прежде всего, проверьте, не является ли user_namenull. Если это не так, вы устанавливаете текстовое значение null для компонента JavaFX где-то в вашем коде.

if(user_name.getText().trim().isEmpty()){

В любом случае применение trim() к значению null является причиной вашего исключения. Вам это не нужно (см. Комментарий Uluk Biy к этому ответу), но, учитывая, что вы создали user_name TextField, вы должны сначала проверить, не является ли метод getText()null.

Нечто подобное должно сработать:

if (user_name.getText() == null || user_name.getText().trim().isEmpty()) {
     // your code here
}
8
Alexander Ortiz

Хорошо, вот как я это сделал, и это работает.

Если в случае ничего из вышеперечисленного не работает, попробуйте следующее:

Создайте строковую переменную, скажем, String username; Далее попробуйте следующее:

if(username.trim().isEmpty())

Первоначальное предложение не сработало для меня, но создание строки сработало, поэтому, если приведенные выше предложения не сработали для вас, сделайте это.

1
reece8765

вы можете использовать кнопку disableProperty для привязки с TextField. когда текстовое поле пусто, кнопка будет отключена, иначе она будет включена.

используйте код, указанный ниже

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()
    //     )
    //  )

);
0
Prayag Sharma

Это можно проверить просто 

if(textField.getText().trim().equals(""))
{
system.out.println("textField is empty");
}
0
Shersha Fn

textField.getText (). дифферент (). равен ( "")

Вышеупомянутое утверждение работало как очарование для меня.

0
AnkUser