单击按钮时未加载新的 FXML 场景

问题描述

我有一个 gui,我希望在给定正确的登录凭据的情况下,按下登录按钮时应该打开一个新窗口(employeeFXML 窗口),但是,这并没有发生。我查看了 How do I determine the correct path for FXML files,CSS files,Images,and other resources needed by my JavaFX Application? 但它没有解决我的问题。以下是我的主控制器代码

    @FXML
public void Login(ActionEvent event) throws Exception {

    //method here to check if correct login info input
    try{

              FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("employeeFXML.fxml"));
            Parent root1 = (Parent) fxmlLoader.load();
            Stage stage = new Stage();

            stage.setTitle("ABC");
            stage.setScene(new Scene(root1));
            stage.show();

    }
    catch (Exception exception){

    }
}

以下是登录屏幕 FXML 的代码

    <AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefheight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="loginapp.Controller">
   <children>
      <Label layoutX="30.0" layoutY="14.0" text="Database status " />
      <TextField fx:id="username" layoutX="30.0" layoutY="125.0" />
      <Label layoutX="30.0" layoutY="99.0" text="Username" />
      <Label layoutX="30.0" layoutY="174.0" text="Password" />
      <PasswordField fx:id="password" layoutX="30.0" layoutY="200.0" />
      <ComboBox fx:id="comboBox" layoutX="30.0" layoutY="268.0" prefWidth="150.0" promptText="Manager/Employee" />
      <Button fx:id="loginButton" layoutX="61.0" layoutY="338.0" mnemonicParsing="false" onAction="#Login" text="Login" />
      <Label fx:id="dbStatus" layoutX="186.0" layoutY="14.0" text="Label" />
      <Label fx:id="loginStatus" layoutX="146.0" layoutY="343.0" prefheight="17.0" prefWidth="79.0" text="text" />
   </children>
</AnchorPane>

下面是start方法代码

public class Login extends Application{

Controller controller = new Controller();


public void start (Stage stage) throws Exception{
    Parent root = (Parent)FXMLLoader.load(getClass().getResource("login.fxml"));//was /loginapp/login.fxml
    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.setTitle("Employee management system");
    stage.show(); //showing the window
}

public static void main (String [] args){
    launch(args); //this line of code will run the application

}

}

所以我的应用程序在该屏幕上启动,当提供正确的凭据并按下登录按钮时,它应该转到下一个屏幕,但事实并非如此。下面是图形用户界面的启动屏幕图片GUI

以下是我收到的错误消息:

java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at loginapp.Controller.Login(Controller.java:70)
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:72)
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:276)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
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: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:394)
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$2(GlassViewEventHandler.java:432)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)