JavaFX位置未设置错误消息

尝试关闭当前场景并在选择menuItem时打开另一个场景时出现问题。我的主要阶段编码如下:


public void start(Stage primaryStage) throws Exception {

    primaryStage.setTitle("Shop Management");

    FXMLLoader myLoader = new FXMLLoader(getClass().getResource("cartHomePage.fxml"));


    Pane myPane = (Pane) myLoader.load();


    CartHomePageUI controller = (CartHomePageUI) myLoader.getController();


    controller.setPrevStage(primaryStage);

    Scene myScene = new Scene(myPane);

    primaryStage.setScene(myScene);

    primaryStage.show();

}

执行该程序后,它将转到cartHomePage.fxml。选择菜单项后,我可以从那里选择创建产品或创建类别。这是我的动作事件:


Stage prevStage;


public void setPrevStage(Stage stage){

     this.prevStage = stage;

}


 public void gotoCreateCategory(ActionEvent event) throws IOException {

  Stage stage = new Stage();

    stage.setTitle("Shop Management");

    FXMLLoader myLoader = new FXMLLoader(getClass().getResource("createCategory.fxml"));

    Pane myPane = (Pane) myLoader.load();            

    Scene scene = new Scene(myPane);

    stage.setScene(scene);

    prevStage.close();

    setPrevStage(stage);

    stage.show();       

}


//Method to change scene when menu item create product is on click

@FXML

public void gotoCreateProduct(ActionEvent event) throws IOException {

   Stage stage = new Stage();

    stage.setTitle("Shop Management");

    FXMLLoader myLoader = new FXMLLoader(getClass().getResource("creatProduct.fxml"));

    Pane myPane = (Pane) myLoader.load();            

    Scene scene = new Scene(myPane);

    stage.setScene(scene);

    prevStage.close();

    setPrevStage(stage);

    stage.show();      

}

但是,我只能切换一次舞台。例如,我的默认页面是cartHomePage.fxml。运行程序时,首先要创建产品阶段。在那之后,我不能再去任何地方了。错误消息是:


java.lang.IllegalStateException: Location is not set.

and Null Pointer Exception

我关上台并绕过它之后才做好了准备。我想知道哪一部分出错了。


提前致谢。


拉风的咖菲猫
浏览 1704回答 3
3回答

MMMHUHU

我遇到了这个异常,发现的“解决方案”是通过Netbeans IDE进行的: 右键单击->“清理并构建”再次运行项目我不知道为什么这样做有效,但确实如此!

慕神8447489

我将一个简单的NetBeans 8 Java FXML应用程序转换为Maven驱动的应用程序。然后我遇到了问题,因为这些getResource()方法无法找到.fxml文件。在我的原始应用程序中,fxmls散布在程序包树中-每个包树都位于其控制器类文件旁边。在完成Clean并在NetBeans中进行构建后,我检查了目标文件夹中的结果.jar-该.jar根本不包含任何fxml。所有的fxmls奇怪地消失了。然后,我将所有fxml放入resources / fxml文件夹中,并相应地设置getResource方法参数,例如:FXMLLoader(App.class.getClassLoader().getResource("fxml/ObjOverview.fxml")); 在这种情况下,一切正常。fxml文件夹出现在.jar的根目录中,并且包含我所有的fxml。该程序按预期工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java