Javafx 2 按下按钮时更改场景Fxml

Javafx 2 按下按钮时更改场景Fxml,javafx-2,fxml,Javafx 2,Fxml,我有两个fxml文件mainFxml.fxml和second.fxml。主fxml有一个带有fx:id=“change”的按钮。我希望在单击“更改”按钮时更改场景。 mainFxml控制器代码 public void onChangeButtonAction(event e){ Node node=(Node) event.getSource(); Stage stage=(Stage) node.getScene().getWindow(); Parent root = FXMLL

我有两个fxml文件mainFxml.fxml和second.fxml。主fxml有一个带有fx:id=“change”的按钮。我希望在单击“更改”按钮时更改场景。 mainFxml控制器代码

public void onChangeButtonAction(event e){
  Node node=(Node) event.getSource();
  Stage stage=(Stage) node.getScene().getWindow();
  Parent root = FXMLLoader.load(getClass().getResource("second.fxml"));/* Exception */
  Scene scene = new Scene(root);
  stage.setScene(scene);
  stage.show();


}
但当我按下“更改”按钮时,它会抛出异常,因为未指定任何资源。帮帮我

堆栈跟踪

No resources specified.
file:/E:/Projects/javaFx/demo/dist/demo.jar!/demo/sucess.fxml:14
  at javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:305)
  at javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:197)
  at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:588)
  at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2430)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2136)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2742)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2721)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2707)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2694)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2683)
  at demo.myFirstFxmlController.onSuccess(myFirstFxmlController.java:130)
  at demo.myFirstFxmlController.OnSubmitAction(myFirstFxmlController.java:53)

很可能您的文件
second.fxml
mainFxml.fxml
的ControllerJava文件不在同一个文件夹中。

它位于类路径上,因此它应该是资源,应该用正斜杠进行处理,即。 /second.fxml


这是假设它不在包中。确保生成系统也将其与类文件一起复制到输出目录。

“啊,那么您需要/demo/second.fxml作为资源路径。这么说,我不明白为什么错误消息会显示suces.fxml而不是second.fxml。如果上述建议不起作用,您可以发布fxml吗?–Andy Till”

安迪·蒂尔的评论就是这个问题的答案。 谢谢你,安迪。你解决了我的问题:) 竖起大拇指

包括包名。 例如:

/包名称/fxml文件名称.fxml


导入java.io.IOException

我通过使用try/catch块来包围负载(getClass…),或者通过导入java.io.IOException来实现它


享受:)

所有文件都在同一个目录中是的,第二个是常见问题。如果您在Netbeans中,请运行Clean and Build以确保它包含在包中。。我用winrar检查过。。即使将其更改为/second.fxmlIs,错误仍然存在。它是否位于jar的根目录中?是否是另一个目录?有一个名为demo的包,所有文件都在itAh中,那么您需要/demo/second.fxml作为资源路径。这么说,我不明白为什么错误消息会显示suces.fxml而不是second.fxml。如果上述建议不起作用,您可以发布fxml吗?根据stacktrace,在第14行加载“second.fxml”(又名suces.fxml)时会发生错误。如果您需要帮助,请发布suces.fxml或至少14行。我使用场景生成器制作了此fxml:)我从来没有检查过该文件:D我的错误:(您应该发布FXML。我在JavaFX应用程序中加载文件时遇到一些问题,其中一个问题是我引用的控制器不存在或在另一个包中。Benjamin:我的错误是我不小心在elipsis字符串中为标签添加了一个空格……我从没想过这会导致错误:-)当我把它改成……它起作用了:-)