Как и где я могу написать условие 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 сек)