尝试关闭当前场景并在选择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进行的:
右键单击->“清理并构建”
再次运行项目
我不知道为什么这样做有效,但确实如此!
慕神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。该程序按预期工作。
添加回答
举报
0/150
提交
取消