javafx.fxml.LoadException:元素未定义默认属性
使用FXML加载胶子布局。 我希望以一种稍微不同的方式加载布局,然后文档会这样做: 区别在于我想用FXMLLoader加载它 我的代码与此示例类似: 扩展MobileApplication的类 Class LayerLoader extensed Layer-我想用这个类来加载FXMLjavafx.fxml.LoadException:元素未定义默认属性,exception,javafx,fxml,gluon,Exception,Javafx,Fxml,Gluon,使用FXML加载胶子布局。 我希望以一种稍微不同的方式加载布局,然后文档会这样做: 区别在于我想用FXMLLoader加载它 我的代码与此示例类似: 扩展MobileApplication的类 Class LayerLoader extensed Layer-我想用这个类来加载FXML public LayerLoader(){ FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath)); Par
public LayerLoader(){
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath));
Parent root = null;
try {
root = loader.load(); //exception in this line
} catch (IOException e) {
e.printStackTrace();
}
}
注意:“视图”以类似的方式加载。很好
FXML文件
当我尝试在LayerLoader中加载fxml时会发生异常。它指的是我的FXML
它说StackPane没有定义默认属性。(javafx.fxml.LoadException:元素未定义默认属性。)
谢谢,请..不确定,如果
SidePopupView
用@NamedArg
注释它的构造函数参数,但是类似乎没有使用@DefaultProperty
注释,要求您将
元素包装到
元素中,或者使其无法通过fxml创建实例。错误可能是指SlidePopupView
。那是你的课吗?你能展示它吗?@Slaw它不是我的类,它是胶子类。@fabian是对的,它需要一个@NamedArg
参数。不幸的是,我不知道什么是NamedArgs
,以及如何使用它们。但我是按照他说的去做的,现在起作用了。
public LayerLoader(){
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath));
Parent root = null;
try {
root = loader.load(); //exception in this line
} catch (IOException e) {
e.printStackTrace();
}
}
<imports...>
<SidePopupView fx:id="sidePopup" side="LEFT" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.40"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="x.y.controller.layoutController">
<StackPane fx:id="stackPane" prefHeight="150.0" prefWidth="200.0">
<children>
<Button />
</children>
</StackPane> <!-- Exception in this line -->
</SidePopupView>
@Override
protected void updateAppBar(AppBar appBar) {
appBar.setNavIcon(MaterialDesignIcon.MENU.button(
e -> MobileApplication.getInstance().showLayer("LAYER"))
);
}