0

Im having trouble load fxml file into my JavaFX application. Can anybody help me with my code? Im very new to JavaFx so tell me if it's incorrect

Here is my Project Structure enter image description here

Here is Login Controller from

package Controllers;

import Models.System.LoginModel;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXPasswordField; 
import com.jfoenix.controls.JFXTextField;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Paint;

import java.io.IOException;
import java.net.URL;
import java.sql.SQLException;
import java.util.ResourceBundle;

public class SigninController implements Initializable {
@FXML
public JFXButton admSection;
@FXML
public JFXButton opSection;
@FXML
public JFXTextField username;
@FXML
public JFXPasswordField password;
@FXML
public Label loginHint;
@FXML
public JFXButton btnLogin;
@FXML
public AnchorPane bottomBorder;

@FXML
private StageController stageController;

// Class Login
LoginModel loginModel;
{
    try {
        loginModel = new LoginModel();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void initialize(URL location, ResourceBundle resources) {
    username.setDisable(true);
    password.setDisable(true);
    bottomBorder.setStyle("-fx-background-color: #e8e8e8");
    loginHint.setText("Please select your section");
}

@FXML
public void admAction(ActionEvent actionEvent) {
    setField("#03A9F4");
}

@FXML
public void opAction(ActionEvent actionEvent) {
    setField("#E91E63");
}

@FXML
public void loginAction(ActionEvent actionEvent) {
    try {
        if (loginModel.loginAdmin(username.getText(), password.getText())) {
            try {
                StackPane home = FXMLLoader.load(getClass().getResource("../Views/Dashboard.fxml"));
                stageController.stackPane.getChildren().setAll(home);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            loginHint.setText("Invalid username or password");
        }
    } catch (SQLException e) {
        loginHint.setText("Login Failed");
        e.printStackTrace();
    }
}

public void setParentController(StageController stageController) {
    this.stageController = stageController;
}

public void setField(String color) {
    String admin = "#03A9F4";
    String operator = "#E91E63";

    username.setDisable(false);
    password.setDisable(false);
    loginHint.setText("Please insert your username and password");
    username.requestFocus();
    username.setFocusColor(Paint.valueOf(String.valueOf(color)));
    password.setFocusColor(Paint.valueOf(String.valueOf(color)));
    bottomBorder.setStyle("-fx-background-color: " + color);
}
}

I want to load another fxml file into a pane in my main stage And here is my Main Stage Controller

package Controllers;

import Helpers.EffectUtilities;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXDialog;
import com.jfoenix.controls.JFXDialogLayout;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.geometry.Rectangle2D;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ToggleButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Screen;
import javafx.stage.Stage;
import javafx.stage.Window;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

public class StageController implements Initializable {

@FXML
public StackPane stackPane;
@FXML
public AnchorPane stagePane;
@FXML
public AnchorPane outterPane;

@FXML
public AnchorPane stageControl;
@FXML
public Button closeBtn;
@FXML
public Button minimizeBtn;
@FXML
public ToggleButton maximizeBtn;

@FXML
private SigninController signinController;

@Override
public void initialize(URL location, ResourceBundle resources) {
    try {
        StackPane home = FXMLLoader.load(getClass().getResource("../Views/Signin.fxml"));
        stagePane.getChildren().addAll(home);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@FXML
public void closeAction(ActionEvent actionEvent) {
    JFXDialogLayout closeDialog = new JFXDialogLayout();
    closeDialog.setBody(new Text("Are you sure want to exit Inventory Management?"));
    JFXDialog dialog = new JFXDialog(stackPane, closeDialog, JFXDialog.DialogTransition.CENTER);
    // Yes Button
    JFXButton yesButton = new JFXButton("Yes");
    yesButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            dialog.close();
            System.exit(0);
        }
    });
    // No Button
    JFXButton noButton = new JFXButton("No");
    noButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            dialog.close();
        }
    });
    closeDialog.setActions(noButton, yesButton);
    dialog.show();
}

@FXML
public void minimizeAction(ActionEvent actionEvent) {
    Stage primaryStage = (Stage) outterPane.getScene().getWindow();
    primaryStage.setIconified(true);
}

@FXML
public void maximizeAction(ActionEvent actionEvent) {
    if (maximizeBtn.isSelected()) {
        Screen screen = Screen.getPrimary();
        Rectangle2D bounds = screen.getVisualBounds();

        Node source = (Node) actionEvent.getSource();
        Window primaryStage = source.getScene().getWindow();

        primaryStage.setX(bounds.getMinX());
        primaryStage.setY(bounds.getMinY());
        primaryStage.setWidth(bounds.getWidth());
        primaryStage.setHeight(bounds.getHeight());
    } else {
        Node source = (Node) actionEvent.getSource();
        Window primaryStage = source.getScene().getWindow();

        primaryStage.setWidth(1200);
        primaryStage.setHeight(600);
    }
}

public void controlDragged(MouseEvent mouseEvent) {
    Stage primaryStage = (Stage) outterPane.getScene().getWindow();
    EffectUtilities.makeDraggable(primaryStage, stageControl);
}
}

I dont have any idea how this is going to work And i have an error like this

"C:\Program Files\Java\jdk1.8.0_151\bin\java" -
agentlib:jdwp=transport=dt_socket,address=127.0.0.1:52060,suspend=y,server=n -javaagent:C:\Users\MUHAMA~1\AppData\Local\Temp\capture12724jars\debugger-
agent.jar=C:\Users\MUHAMA~1\AppData\Local\Temp\capture10492.props -
Dfile.encoding=UTF-8 -classpath "C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\charsets.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\deploy.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\access-bridge-64.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\cldrdata.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\dnsns.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\jaccess.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\jfxrt.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\localedata.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\nashorn.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\sunec.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\sunjce_provider.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\sunmscapi.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\sunpkcs11.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\ext\zipfs.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\javaws.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\jce.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\jfr.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\jfxswt.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\jsse.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\management-agent.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\plugin.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\resources.jar;C:\Program 
Files\Java\jdk1.8.0_151\jre\lib\rt.jar;C:\Users\Muhamad 
Iqbal\IdeaProjects\Inventory Management\out\production\Inventory 
Management;C:\Users\Muhamad Iqbal\IdeaProjects\Inventory 
Management\lib\mysql-connector-java-5.1.44.jar;C:\Users\Muhamad 
Iqbal\Downloads\jfoenix.jar;D:\Program Files\IntelliJ IDEA Community Edition 
2017.3.2\lib\idea_rt.jar" Main
Connected to the target VM, address: '127.0.0.1:52060', transport: 'socket'
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: 
java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
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:8413)
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:381)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:417)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
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$147(WinApplication.java:177)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
... 48 more
Caused by: java.lang.NullPointerException
at Controllers.SigninController.loginAction(SigninController.java:76)
... 58 more

I have an error at Line 7 :

@FXML
public void loginAction(ActionEvent actionEvent) {
try {
    if (loginModel.loginAdmin(username.getText(), password.getText())) {
        try {
            StackPane home = FXMLLoader.load(getClass().getResource("../Views/Dashboard.fxml"));
            stageController.stackPane.getChildren().setAll(home);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        loginHint.setText("Invalid username or password");
    }
} catch (SQLException e) {
    loginHint.setText("Login Failed");
    e.printStackTrace();
}
}

The error is indicating that i have an NullPointerException, and how can i fix this?

Muhamad Iqbal
  • 47
  • 1
  • 7

0 Answers0