Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX FXMLLoader无法加载.fxml文件_Java_Javafx 8 - Fatal编程技术网

JavaFX FXMLLoader无法加载.fxml文件

JavaFX FXMLLoader无法加载.fxml文件,java,javafx-8,Java,Javafx 8,我目前正在处理javaFX应用程序,我的问题是我一直遇到以下异常: javafx.fxml.LoadException: fx:controller can only be applied to root element. 我使用的是Java8,JavaFX版本(如JavaFX.properties所示)是JavaFX.runtime.version=8.0.65 javafx.runtime.build=b17 以下是我正在尝试加载的一些LoginView.fxml: <AnchorP

我目前正在处理javaFX应用程序,我的问题是我一直遇到以下异常:

javafx.fxml.LoadException: fx:controller can only be applied to root element.
我使用的是Java8,JavaFX版本(如JavaFX.properties所示)是JavaFX.runtime.version=8.0.65 javafx.runtime.build=b17

以下是我正在尝试加载的一些LoginView.fxml:

<AnchorPane fx:id="root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="320.0" prefWidth="480.0" style="-fx-background-color: lightblue" xmlns:fx="http://javafx.com/fxml" fx:controller="com.th.officesuite.ui.login.LoginController">
....
</AnchorPane>

....
这里是我尝试加载此文件的位置:

   public FxmlDialog(final DialogController controller, URL fxml, Window owner, StageStyle style, LanguageModel lang) {
    super(style);
    initOwner(owner);
    initModality(Modality.WINDOW_MODAL);
    FXMLLoader loader = new FXMLLoader();
    try {
        loader.setControllerFactory(new Callback<Class<?>, Object>() {
            @Override
            public Object call(Class<?> aClass) {
                return controller;
            }
        });
        loader.setBuilderFactory(new JavaFXBuilderFactory());
        URL systemResource1 = ClassLoader.getSystemResource("fxml/LoginView.fxml");
        loader.setResources(lang.getBundle());
        loader.setLocation(systemResource1);
        Scene scene = new Scene((Parent) loader.load());
        scene.getRoot().setOnMouseDragged(getMouseDraggedHandler());
        scene.getRoot().setOnMousePressed(getMousePressedHandler());
        setScene(scene);
        fxmlStream.close();
        controller.setDialog(this);            
    } catch (IOException e) {
        System.out.println(e.getMessage());
        throw new RuntimeException(e);
    }
}
公共fxml对话框(最终对话框控制器、URL fxml、窗口所有者、StageStyle样式、LanguageModel语言){ 超级(风格); 所有者(所有者); 初始化模态(模态.窗口\模态); FXMLLoader=新的FXMLLoader(); 试一试{
setControllerFactory(新回调)错误消息显示“fx:controller只能应用于根元素”。您在帖子中显示的
AnchorPane
元素是FXML的根元素吗?是的,它是我的LoginView中的根元素,是在任何其他元素上指定的第一个元素。fxmlIs
fx:controller
?实际上问题在不久前就解决了……它并没有完全与JavaFX连接,而是在initialize()中使用@Autowired object)我的java控制器的方法…奇怪的事情,但解决了。