KD Palekar Ответов: 3

Как и где я могу написать условие if в javafx?


У меня есть одна форма входа в JavaFX, и есть 2 текстовых поля и 1 кнопка входа. и они подключились к базе данных. Что я хочу сделать, так это то, что когда оба текстовых поля пусты и если пользователь нажимает на кнопку входа в систему, должно появиться приглашение сказать, что "неверные данные", и если пользователь вводит правильное имя пользователя и пароль, то вход успешен.

Я сделал часть подключения к базе данных и условие if тоже. но условие if не работает. Он работает только один раз. Я имею в виду, что предположим, что я запустил программу и непосредственно нажал на кнопку входа в систему, не вводя данные в текстовые поля, она показывает ошибку недопустимых данных только один раз. Если я снова нажму на логин без ввода данных, то столкнусь с ошибкой. Если я ввел данные в текстовые поля, то все работает нормально. Он сохраняет данные в моей таблице. Но если условие не работает хорошо.

Пожалуйста, помогите мне решить эту проблему.

Что я уже пробовал:

package sample2;

import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXTextField;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javax.swing.JOptionPane;


public class FXMLDocumentController implements Initializable {
    
    Connection conn=null;
    PreparedStatement pst=null;
    
  @FXML
    private JFXTextField passwordtxt;

    @FXML
    private JFXTextField usernametxt;

    @FXML
    private JFXButton loginbtn;

    @FXML
    void loginbtnclick(ActionEvent event) 
    {
        String user=usernametxt.getText();
        String pass=passwordtxt.getText();
            
        if(user.contentEquals("") && pass.contains(""))
        {
            JOptionPane.showMessageDialog(null,"Login failed");
        }
       else
        {
        String sql="insert into new (nn,nnn) values(?,?)";
        try
        {
           
           Class.forName("com.mysql.jdbc.Driver");
           conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdatabase?zeroDateTimeBehavior=convertToNull","root","12345678");
            pst = (PreparedStatement)conn.prepareStatement(sql);
           pst.setString(1,user);
           pst.setString(2,pass);
            pst.execute();
           JOptionPane.showMessageDialog(null,"Record Inserted Successfully");
           usernametxt.setText(null);
        passwordtxt.setText(null);
        }
        
        
        catch(Exception e)
            
        {
       // e.printStackTrace(null);
        }
        }

    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        
    }    
    
}

Richard MacCutchan

Какая ошибка и где она происходит?

KD Palekar

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

Но проблема в том, что теперь я прямо нажимаю на кнопку входа в систему, не вводя данные в текстовые поля, и это дает мне список ошибок. Я думаю, что это из-за того, что соединение с базой данных все еще остается где-то открытым. Потому что программы работают гладко, пока я не введу данные в таблицу. После ввода данных если я оставлю поля пустыми и нажму на кнопку входа в систему проблема начнется

СПИСОК ОШИБОК -
Выполнение E:\Documents\NetBeansProjects\sample2\dist\run702429951\sample2.jar использование платформы C:\Program файлы (x86)\Java\jdk1. 8. 0_91\jre/bin/java
Исключение в потоке "поток приложения JavaFX" java. lang.RuntimeException: java.lang.reflect.InvocationTargetException
на базе JavaFX.FXML-файл.FXMLLoader$MethodHandler. invoke(FXMLLoader. java:1774)
на базе JavaFX.FXML-файл.FXMLLoader$ControllerMethodEventHandler. handle(FXMLLoader. java:1657)
на ком.солнце.в JavaFX.событие.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.Ява:86)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:238)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:191)
на ком.солнце.в JavaFX.событие.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher. java: 59)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:58)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.EventUtil.fireEventImpl(EventUtil. java:74)
на ком.солнце.в JavaFX.событие.EventUtil.кнопкуfireevent(EventUtil.Ява:49)
на базе JavaFX.событие.Событие.кнопкуfireevent(событие.Ява:198)
на базе JavaFX.происшествия.Узел.кнопкуfireevent(узел.Ява:8411)
на базе JavaFX.происшествия.контроль.Кнопки.кнопку огня (.Ява:185)
на ком.солнце.в JavaFX.происшествия.контроль.поведения.ButtonBehavior.mouseReleased(ButtonBehavior.Ява:182)
на ком.солнце.в JavaFX.происшествия.контроль.кожи.BehaviorSkinBase$1. handle(BehaviorSkinBase. java: 96)
на ком.солнце.в JavaFX.происшествия.контроль.кожи.BehaviorSkinBase$1. handle(BehaviorSkinBase. java: 89)
на ком.солнце.в JavaFX.событие.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.Ява:218)
на ком.солнце.в JavaFX.событие.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.Ява:80)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:238)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:191)
на ком.солнце.в JavaFX.событие.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher. java: 59)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:58)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.EventUtil.fireEventImpl(EventUtil. java:74)
на ком.солнце.в JavaFX.событие.EventUtil.кнопкуfireevent(EventUtil.Ява:54)
на базе JavaFX.событие.Событие.кнопкуfireevent(событие.Ява:198)
на явафх. сцене.Scene$MouseHandler. process(Scene. java:3757)
на явафх. сцене.Scene$MouseHandler. access$1500(Scene. java:3485)
на базе JavaFX.сцен

Richard Deeming

pass.contains("")

Это действительно то, что вы хотели написать? В зависимости от того, как contains метод реализован, либо каждый строка содержит пустую строку, или ни один из них делать.

Кроме того, вы, вероятно, хотите или, а не и, в этом состоянии. В противном случае вы отклоняете ввод только в том случае, если оба поля пусты.

Я подозреваю, что вы хотите: if(user.contentEquals("") || pass.contentEquals(""))

KD Palekar

- Да, сэр. Я внес некоторые изменения в код условия IF, но все еще сталкиваюсь с той же проблемой. Спасибо за это предложение поля пароля, но прямо сейчас мне нужно избавиться от этой ошибки. Поэтому, пожалуйста, скажите мне, как я могу решить эту проблему.

ИЗМЕНЕНИЯ, ВНЕСЕННЫЕ В КОДЕКС -

если(пользователь.пустой()||перевал.отсутствуют())
{
Оповещение оповещение=новый Алерт(Alert.Тип оповещения.ОШИБКА);
оповещения.setHeaderText(нуль);
alert.setContentText ("недопустимые сведения");
оповещения.showAndWait();
вернуть;
}

Richard Deeming

Так в чем же ошибка? Детали в вашем предыдущем комментарии кажутся неполными - вы только что получили трассировку стека для необработанного исключения в вашем обработчике событий. Вам понадобятся полные сведения об исключении, которое генерируется в обработчике событий.

KD Palekar

Вы можете дать мне код для этого? Пожалуйста, сэр. Я в самом разгаре своего проекта.

Richard Deeming

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

Richard Deeming

О'кей, я вижу, вы опубликовали еще несколько подробностей об ошибке. Какая строка кода, которую вы разместили, является строкой 47?

KD Palekar

Что????????

Richard Deeming

Вызванные: Java для.яз.Исключение NullPointerException
в sample2.FXMLDocumentController.loginbtnclick(FXMLDocumentController. java:47)

У тебя есть NullPointerException будучи брошенным на линию 47 из FXMLDocumentController.java.

Основываясь на коде, который вы опубликовали, эта строка находится в пределах try..catch блок, так что исключение было бы поймано и проглочено.

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

Так что же это за код в строке 47?

KD Palekar

если(пользователь.пустой()||перевал.отсутствуют())

это линия 47

Richard Deeming

Так что либо user является null, или pass является null.

Попробуй:
if (user == null || user.isEmpty() || pass == null || pass.isEmpty())

KD Palekar

Вау вау вау вау вау вау вау вау вау вау вау^бесконечность
&усилитель;
спасибо^бесконечность.

ТЫ ПОТРЯСАЮЩАЯ...... ЭТО СРАБОТАЛО........ ОГРОМНОЕ ОГРОМНОЕ ОГРОМНОЕ СПАСИБО....

Richard Deeming

Кроме того, вы никогда не должны хранить пароли в виде обычного текста.

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хеширование паролей - все правильно[^]

KD Palekar

СПИСОК ОШИБОК -
Выполнение E:\Documents\NetBeansProjects\sample2\dist\run702429951\sample2.jar использование платформы C:\Program файлы (x86)\Java\jdk1. 8. 0_91\jre/bin/java
Исключение в потоке "поток приложения JavaFX" java. lang.RuntimeException: java.lang.reflect.InvocationTargetException
на базе JavaFX.FXML-файл.FXMLLoader$MethodHandler. invoke(FXMLLoader. java:1774)
на базе JavaFX.FXML-файл.FXMLLoader$ControllerMethodEventHandler. handle(FXMLLoader. java:1657)
на ком.солнце.в JavaFX.событие.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.Ява:86)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:238)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:191)
на ком.солнце.в JavaFX.событие.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher. java: 59)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:58)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.EventUtil.fireEventImpl(EventUtil. java:74)
на ком.солнце.в JavaFX.событие.EventUtil.кнопкуfireevent(EventUtil.Ява:49)
на базе JavaFX.событие.Событие.кнопкуfireevent(событие.Ява:198)
на базе JavaFX.происшествия.Узел.кнопкуfireevent(узел.Ява:8411)
на базе JavaFX.происшествия.контроль.Кнопки.кнопку огня (.Ява:185)
на ком.солнце.в JavaFX.происшествия.контроль.поведения.ButtonBehavior.mouseReleased(ButtonBehavior.Ява:182)
на ком.солнце.в JavaFX.происшествия.контроль.кожи.BehaviorSkinBase$1. handle(BehaviorSkinBase. java: 96)
на ком.солнце.в JavaFX.происшествия.контроль.кожи.BehaviorSkinBase$1. handle(BehaviorSkinBase. java: 89)
на ком.солнце.в JavaFX.событие.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.Ява:218)
на ком.солнце.в JavaFX.событие.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.Ява:80)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:238)
на ком.солнце.в JavaFX.событие.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:191)
на ком.солнце.в JavaFX.событие.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher. java: 59)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:58)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.BasicEventDispatcher.dispatchevent метод(BasicEventDispatcher.Ява:56)
на ком.солнце.в JavaFX.событие.EventDispatchChainImpl.dispatchevent метод(EventDispatchChainImpl.Ява:114)
на ком.солнце.в JavaFX.событие.EventUtil.fireEventImpl(EventUtil. java:74)
на ком.солнце.в JavaFX.событие.EventUtil.кнопкуfireevent(EventUtil.Ява:54)
на базе JavaFX.событие.Событие.кнопкуfireevent(событие.Ява:198)
на явафх. сцене.Scene$MouseHandler. process(Scene. java:3757)

KD Palekar

на явафх. сцене.Scene$MouseHandler. access$1500(Scene. java:3485)
на явафх. сцене.Происшествия.impl_processMouseEvent(сцена.Ява:1762)
на явафх. сцене.Scene$ScenePeerListener. mouseEvent(Scene. java:2494)
в com. sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification. run(GlassViewEventHandler. java:380)
в com. sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification. run(GlassViewEventHandler. java:294)
в Java.безопасности.AccessController.doPrivileged(Native метод)
в com. sun.javafx.tk.quantum.GlassViewEventHandler. lambda$handleMouseEvent$354(GlassViewEventHandler. java:416)
в com. sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit. java:389)
в com. sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler. java:415)
на ком.солнце.стекло.пользовательского интерфейса.Смотреть.handleMouseEvent(вид.Ява:555)
на ком.солнце.стекло.пользовательского интерфейса.Смотреть.notifyMouse(вид.Ява:937)
на ком.солнце.стекло.пользовательского интерфейса.выиграть.WinApplication._runLoop(собственный метод)
на ком.солнце.стекло.пользовательского интерфейса.выиграть.WinApplication.lambda$null$148(WinApplication. java:191)
на Яве.Нить.выполнения(резьба.на Java:745)
Вызванные: Java для.яз.отразить.InvocationTargetException
на солнце.GeneratedMethodAccessor3. invoke(неизвестный источник)
на солнце.DelegatingMethodAccessorImpl.вызов(DelegatingMethodAccessorImpl.Ява:43)
в Java.яз.отразить.Метод.вызов(способ.Ява:498)
на солнце.отразить.разное.Батут.вызов(MethodUtil.Ява:71)
на солнце.GeneratedMethodAccessor1. invoke(неизвестный источник)
на солнце.DelegatingMethodAccessorImpl.вызов(DelegatingMethodAccessorImpl.Ява:43)
в Java.яз.отразить.Метод.вызов(способ.Ява:498)
на солнце.отразить.разное.MethodUtil.вызов(MethodUtil.Ява:275)
на базе JavaFX.FXML-файл.FXMLLoader$MethodHandler. invoke(FXMLLoader. java:1769)
... Еще 48
Вызванные: Java для.яз.Исключение NullPointerException
в sample2.FXMLDocumentController.loginbtnclick(FXMLDocumentController. java: 47)
... Еще 57
Удаление каталога E:\Documents\NetBeansProjects\sample2\dist\run702429951
jfxsa-беги:
Построить успешный (общее время: 54 сек)

3 Ответов

Рейтинг:
25

KD Palekar

Итак, ответ таков: я должен написать условие IF, как показано ниже :

if (user == null || user.isEmpty() || pass == null || pass.isEmpty())



ОТВЕТ ДАЕТСЯ
Richard Deeming


ОГРОМНОЕ СПАСИБО, СЭР!!!


Рейтинг:
1

Member 13371163

Мне потребовалось больше часа, чтобы найти способы решить эту проблему, но я не могу найти решение в интернете, пока не осознаю свою ошибку.
Что я сделал вместо того, чтобы мой textfield, чтобы быть очищены, как это [ текстовое поле.помощью setText(нуль) ] , я поставил его, чтобы [ текстовое поле.помощью setText ("") ], чтобы избежать исключения NullPointerException... На тот случай, если это еще не решено...


CHill60

Она решена. Вот почему существует общепринятое решение

Рейтинг:
0

Member 13371163

Мне потребовалось больше часа, чтобы найти способы решить эту проблему, но я не могу найти решение в интернете, пока не осознаю свою ошибку.
Что я сделал вместо того, чтобы мой textfield, чтобы быть очищены, как это [ текстовое поле.помощью setText(нуль) ] , я поставил его, чтобы [ текстовое поле.помощью setText ("") ], чтобы избежать исключения NullPointerException... На тот случай, если это еще не решено...


Попробуйте установить свой код
usernametxt.помощью setText(нуль);
passwordtxt.помощью setText(нуль);
в
usernametxt.помощью setText("");
passwordtxt.помощью setText("");
и все будет отлично работать!