2012-10-17 52 views
2

我有2个fxml文件mainFxml.fxml和second.fxml。主要的fxml有一个fx:id =“change”的按钮。点击更改按钮时,我想要更改场景。 代码mainFxml控制器按下按钮时更改场景Fxml

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) 
+1

根据堆栈跟踪,同时在线路14加载“second.fxml”(又名sucess.fxml)如果您需要帮助时出现错误后sucess.fxml或至少线围绕14 –

+0

我使用现场建设者做出这个FXML :)我从来没有费心去检查文件:d我的错:( –

+0

你应该张贴的FXML我遇到了一些麻烦,我的JavaFX加载文件。应用程序和其中一个问题是我引用了一个控制器,或者不存在或在另一个包中。 –

回答

0

最大的可能是你的文件second.fxml不位于与mainFxml.fxml的DC型的java文件相同的文件夹。

+0

所有文件都在同一目录 –

1

这是在classpath所以应该是资源应以正斜杠precedded即 /second.fxml

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

+0

是的,第二个是一个共同的问题。如果你在Netbeans运行Clean和Build来确保。 –

+0

它被包含在包..我checcked用winrar .. 存在错误,甚至将其更改为/second.fxml –

+0

后,它在罐子的根源是它的另一个目录? –

1

“啊,那么你需要/demo/second.fxml作为资源路径。说到这里,我很困惑为什么错误信息显示sucess.fxml而不是second.fxml。如果上述建议不起作用,您发布FXML - 安迪直到”

安迪这个注释直到是问题的答案。 谢谢安迪。你解决了我的问题:) 竖起大拇指!

包含软件包名称。 对于前:

/package_name/fxml_file_name.fxml