2

我有 2 个 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)
4

4 回答 4

1

它在类路径上,所以它应该是资源应该以正斜杠开头,即 /second.fxml

那是假设它不在包装中。确保您的构建系统也将其与您的类文件一起复制到输出目录。

于 2012-10-17T10:58:17.880 回答
1

“啊,那你需要/demo/second.fxml作为资源路径。话说,我很困惑为什么错误消息说的是sucess.fxml而不是second.fxml。如果上面的建议不起作用,你可以发布fxml ?——安迪·蒂尔”

Andy Till 的这条评论就是这个问题的答案。谢谢安迪。你解决了我的问题:) 竖起大拇指!!!

包括包名称。例如:

/package_name/fxml_file_name.fxml

于 2013-03-01T21:37:09.597 回答
0

很可能您的文件与的控制器 java 文件second.fxml不在同一个文件夹中。mainFxml.fxml

于 2012-10-17T07:18:26.297 回答
0

导入 java.io.IOException;

我通过使用 try/catch 块包围负载(getClass ...)或仅导入 java.io.IOException 来使其工作。

享受 :)

于 2018-09-10T20:52:15.093 回答