Ошибка: исключение в потоке «Поток приложения JavaFX» null

0

Когда я нажимаю следующую кнопку на экране входа в систему, я получаю следующую ошибку:

Исключение в потоке "Поток приложения JavaFX" null java.lang.RuntimeException: java.lang.reflect.InvocationTargetException в javafx.fxml.FXMLLoader $ MethodHandler.invoke(FXMLLoader.java:1774) в javafx.fxml.FleMlerHloader $ FXMLLoader.java:1657) по адресу com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) по адресу com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent:.event.EventHandlerManager. ) в com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) в com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56.jp. dispatc hEvent (EventDispatchChainImpl.java:114) в com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) в com.sun.javafx.event.EventDispatchChainImpl.davaDunpatch.vent.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) в com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) в javafx.event.Event.fireEvent(Event.java:198) в javafx.scene.Node.fireEvent(Node.java:8411) в javafx.scene.control.Button.fire(Button.java:185) в com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior. Java: 182) в com.sun.javafx.scene.control.skin.BehaviorSkinBase $ 1.handle(BehaviorSkinBase.java:96) в com.sun.javafx.scene.control.skin.BehaviorSkinBase $ 1. ручка (BehaviorSkinBase.java: 89) в com.sun.javafx.event.CompositeEventHandler $ NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) в com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent: композитный узел) om.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) в com.sun.javafx.event. CompositeEventDispatcher.java:59) на com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) на com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDismpl.jp).event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) в com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) в com.sun.javafcher.ventEvent ) в com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) в com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) в com.sun.javafx. fireEvent (EventUtil.java:54) в javafx.event.Event.fireEv ent (Event.java:198) в javafx.scene.Scene $ MouseHandler.process(Scene.java:3757) в javafx.scene.Scene $ MouseHandler.access $ 1500 (Scene.java:3485) в javafx.scene.Scene. impl_processMouseEvent (Scene.java:1762) в javafx.scene.Scene $ ScenePeerListener.mouseEvent(Scene.java:2494) в com.sun.javafx.tk.quantum.GlassViewEventHandler $ MouseEventNotification.run4: at..sun.javafx.tk.quantum.GlassViewEventHandler $ MouseEventNotification.run(GlassViewEventHandler.java:295) в java.security.AccessController.doPrivileged (собственный метод) в com.sun.javafx.tk.quantum.handlerEvent $ EventEvent (GlassViewEventHandler.java:432) в com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) в com.sun.javafx.tk.quantum.GlassViewEventHandler.31.javaE com.sun.glass.ui.View.handleMouseEvent(View.java:555) на com.sun.glass.ui.View.notifyMouse(View.java:937) на com.sun.glass.ui.win.WinApplica tion._runLoop (собственный метод) на com.sun.glass.ui.win.WinApplication.lambda $ null $ 147 (WinApplication.java:177) на java.lang.Thread.run (неизвестный источник) Причина: java.lang. refle.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invokereho.holan(unknown Source) Неизвестный источник) в sun.reflect.misc.Trampoline.invoke (Неизвестный источник) в sun.reflect.GeneratedMethodAccessor1.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java.lang.reflect.Method. invoke (Неизвестный источник) по адресу sun.reflect.misc.MethodUtil.invoke (Неизвестный источник) по адресу javafx.fxml.FXMLLoader $ MethodHandler.invoke(FXMLLoader.java:1771)... еще 48 Причины: java.lang.NumberFormatException: Для входной строки: "" в java.lang.NumberFormatException.forInputString (неизвестный источник) в java.lang.Integer.parseInt (неизвестный источник) в ja va.lang.Integer.valueOf (Неизвестный источник) по адресу sample.controller.LoginController.login(LoginController.java:29)... еще 58

Моя страница входа:

import com.jfoenix.controls.JFXPasswordField;
import com.jfoenix.controls.JFXTextField;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import sample.entity.Doctor;
import sample.entity.Patient;
import sample.db.SqlControl;

import java.io.IOException;

public class LoginController {

    private MainController mainController;
    public void setMainController(MainController mainController) {
        this.mainController = mainController;
    }

    @FXML
    JFXTextField loginField;
    @FXML
    JFXPasswordField passwordField;
    @FXML
    Text error;

    @FXML
    public void login() {
        String query = SqlControl.Login(loginField.getText(), passwordField.getText());
        if (Integer.valueOf(query) == 0) {
            error.setVisible(true);
        } else {
            if (Integer.valueOf(SqlControl.isAccountEnabled(loginField.getText())) != 0)
                LoadCabinet(SqlControl.loginRole(loginField.getText(), passwordField.getText()));
            else
                error.setVisible(true);
        }
    }

    @FXML
    public void backToMenu() {
        mainController.loadMenuScreen();
    }

    private void LoadCabinet(String role) {
        FXMLLoader loader;
        Pane pane;
        if (role.equals("admin")) {
            Doctor doctor = new SqlControl().getDoctorByLogin(loginField.getText());
            loader = new FXMLLoader(this.getClass().getResource("../resources/Doctor.fxml"));
            pane = null;
            try {
                pane = loader.load();
            } catch (IOException e) {
                e.printStackTrace();
            }
            DoctorController doctorController = loader.getController();
            doctorController.setDoctor(doctor);
            doctorController.Refresh();
            doctorController.setMainController(mainController);
            mainController.setScreen(pane);
        } else {
            if (role.equals("user")) {
                Patient patient = new SqlControl().getPatientByLogin(loginField.getText());
                loader = new FXMLLoader(this.getClass().getResource("../resources/Patient.fxml"));
                pane = null;
            try {
                pane = loader.load();
            } catch (IOException e) {
                e.printStackTrace();
            }
            PatientController patientController = loader.getController();
            patientController.setMainController(mainController);
            patientController.setPatient(patient);
            patientController.Refresh();
            mainController.setScreen(pane);
        }
    }
}

Моя страница входа в fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextField?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>

<?import com.jfoenix.controls.JFXPasswordField?>
<Pane id="pane-doctor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="700.0" stylesheets="@css/style.css" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.LoginController">
   <children>
      <JFXTextField fx:id="loginField" layoutX="273.0" layoutY="141.0" />
      <JFXPasswordField fx:id="passwordField" layoutX="273.0" layoutY="224.0" />
      <Text layoutX="50.0" layoutY="133.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Login" textAlignment="CENTER" wrappingWidth="600.0">
         <font>
            <Font name="Ubuntu Light" size="25.0" />
         </font>
      </Text>
       <Text layoutX="50.0" layoutY="218.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Password" textAlignment="CENTER" wrappingWidth="600.0">
           <font>
               <Font name="Ubuntu Light" size="25.0" />
           </font>
       </Text>
       <JFXButton id="menu-button" fx:id="logAsADoctor" layoutX="269.0" layoutY="276.0" mnemonicParsing="false" onAction="#login" prefHeight="53.0" prefWidth="165.0" stylesheets="@css/style.css" text="Next">
           <font>
               <Font name="Ubuntu Light" size="13.0" />
           </font></JFXButton>
       <JFXButton id="menu-button" buttonType="FLAT" layoutX="269.0" layoutY="337.0" mnemonicParsing="false" onAction="#backToMenu" prefHeight="53.0" prefWidth="165.0" stylesheets="@css/style.css" text="Back" />
      <Text fill="RED" layoutX="51.0" layoutY="455.0" strokeType="OUTSIDE" strokeWidth="0.0"
           visible="false" fx:id="error" text="*Your username or password is not true!" textAlignment="CENTER" wrappingWidth="600.0">
         <font>
            <Font name="Ubuntu Light" size="25.0" />
         </font>
      </Text>

   </children>
</Pane>
Теги:
javafx

1 ответ

0

Трассировка стека говорит:

Caused by: java.lang.NumberFormatException: For input string: "" 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.valueOf(Unknown Source) 
    at sample.controller.LoginController.login(LoginController.java:29) ... 58 more

И утверждение, где это происходит:

  if (Integer.valueOf(SqlControl.isAccountEnabled(loginField.getText())) != 0)

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню