为了账号安全,请及时绑定邮箱和手机立即绑定

JavaFX位置未设置错误消息

JavaFX位置未设置错误消息

拉风的咖菲猫 2019-10-21 14:57:32
尝试关闭当前场景并在选择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@FXMLpublic 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我关上台并绕过它之后才做好了准备。我想知道哪一部分出错了。提前致谢。
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我遇到了这个异常,发现的“解决方案”是通过Netbeans IDE进行的: 

  1. 右键单击->“清理并构建”

  2. 再次运行项目

我不知道为什么这样做有效,但确实如此!


查看完整回答
反对 回复 2019-10-21
?
慕神8447489

TA贡献1780条经验 获得超1个赞

我将一个简单的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。该程序按预期工作。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 1703 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信