JavaFX - 定义默认值 属性
JavaFX - Defining the default property
我创建了一个使用 fx:root
元素扩展 Region
的自定义控件。我的问题是,当我尝试加载它时,我得到一个 LoadException
,声称我需要定义一个 DefaultProperty
。据我所知,Region 不会将 getChildren()
公开为 public,以便让开发人员决定客户端是否可以自由添加内容。
我的问题是如何将 children 实际定义为默认值 属性?我尝试阅读文档,但他们只说明注释的用途,而不是如何使用。我也找不到任何例子。每次我尝试用 @DefaultProperty
注释字段或方法时,我都会得到编译错误 The annotation @DefaultProperty is disallowed for this location
.
@DefaultProperty
注释是 class 级注释(文档中的 @Target(value=TYPE)
),具有必需的 value
属性指定 属性.
因此以下方法可行:
@DefaultProperty("children")
public class SpecialRegion extends Region {
@Override
public ObservableList<Node> getChildren() {
return super.getChildren();
}
}
请注意,如果您不创建 getChildren()
public,则 FXMLLoader
将无法以使其能够填充它的方式访问它。因此,即使使用 @DefaultProperty
注释,我认为如果不使用 getChildren()
方法 public
,您也无法完成这项工作,如上所述。在这一点上,您也可以用 subclass Pane
代替 Region
:Pane
和 Region
之间的唯一区别是 public
getChildren()
方法和 DefaultProperty
.
我创建了一个使用 fx:root
元素扩展 Region
的自定义控件。我的问题是,当我尝试加载它时,我得到一个 LoadException
,声称我需要定义一个 DefaultProperty
。据我所知,Region 不会将 getChildren()
公开为 public,以便让开发人员决定客户端是否可以自由添加内容。
我的问题是如何将 children 实际定义为默认值 属性?我尝试阅读文档,但他们只说明注释的用途,而不是如何使用。我也找不到任何例子。每次我尝试用 @DefaultProperty
注释字段或方法时,我都会得到编译错误 The annotation @DefaultProperty is disallowed for this location
.
@DefaultProperty
注释是 class 级注释(文档中的 @Target(value=TYPE)
),具有必需的 value
属性指定 属性.
因此以下方法可行:
@DefaultProperty("children")
public class SpecialRegion extends Region {
@Override
public ObservableList<Node> getChildren() {
return super.getChildren();
}
}
请注意,如果您不创建 getChildren()
public,则 FXMLLoader
将无法以使其能够填充它的方式访问它。因此,即使使用 @DefaultProperty
注释,我认为如果不使用 getChildren()
方法 public
,您也无法完成这项工作,如上所述。在这一点上,您也可以用 subclass Pane
代替 Region
:Pane
和 Region
之间的唯一区别是 public
getChildren()
方法和 DefaultProperty
.