按下按钮时改变场景Fxml

时间:2012-10-17 06:55:39

标签: javafx-2 fxml

我有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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

“啊,那么你需要/demo/second.fxml作为资源路径。说,我很困惑,为什么错误信息说sucess.fxml而不是second.fxml。如果上述建议不起作用,你能不能张贴fxml? - Andy Till“

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

包含包名称。 例如:

  

/package_name/fxml_file_name.fxml

答案 2 :(得分:0)

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

答案 3 :(得分:0)

import java.io.IOException;

通过用try / catch块将load(getClass ...)包围起来,或者只导入java.io.IOException,就可以使它起作用。

享受:)