JavaFX FXMLLoader无法加载.fxml文件
我目前正在处理javaFX应用程序,我的问题是我一直遇到以下异常: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.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中的根元素,是在任何其他元素上指定的第一个元素。fxmlIsfx:controller
?实际上问题在不久前就解决了……它并没有完全与JavaFX连接,而是在initialize()中使用@Autowired object)我的java控制器的方法…奇怪的事情,但解决了。