简短的回答,不。
AStyleableProperty
有对应的CssMetaData
. 后一类具有isSettable(Styleable)
说明(强调我的)的方法:
检查给定节点上的相应属性是否可设置。在为给定属性查找任何样式之前调用此方法。它是抽象的,因此代码可以在不扩展属性的情况下检查属性是否可设置。通常,如果该属性不为 null 或未绑定,则该属性是可设置的。
该方法的存在表明aStyleableProperty
有可能由于某种任意原因而不可设置。
当实现你自己的StyleableProperty
,以及相应的CssMetaData
,你必须实现这个方法。如果StyleableProperty
也实现了Property
,那么这个方法应该检查是否Property
被绑定,false
如果是则返回。这是对所有 internal StyleableProperty
s(也是 a Property
)所做的。此外,如果您使用它StyleablePropertyFactory
,CssMetaData
它创建的将检查是否StyleableProperty
是一个实例,Property
然后检查它的绑定状态。
即使isSettable
返回 true,当 CSS 引擎尝试设置StyleableProperty
. 正如您自己提到的那样,Property
无法设置界限。如果您尝试这样做,所有标准实现Property
都会抛出异常。
话虽如此,您必须小心设置属性的方式。有一个优先级分配给用于设置StyleableProperty
. JavadocStyleableProperty
告诉您哪些方法优先于另一个。
StyleableProperty 允许从 CSS 设置 javafx.beans.property 样式。
这个接口允许 CSS 处理和 javafx.beans.property 之间的协调。该实现确保设置值的优先级按递增顺序并假设同等重要性:
- Application.setUserAgentStylesheet(java.lang.String) 中用户代理样式表的样式
- 从代码中设置的值,例如调用 Node.setOpacity(double)
- Scene.getStylesheets() 或 Parent.getStylesheets() 中作者样式表的样式
- 来自 Node.setStyle(java.lang.String) 的样式