- java.lang.Object
-
- javafx.css.CssMetaData<S,V>
-
- 参数类型
-
S
-S
的类型 -
V
- 转换解析值的类型。
- 已知直接子类:
-
FontCssMetaData
public abstract class CssMetaData<S extends Styleable,V> extends Object
CssMetaData实例提供有关CSS样式的信息,并提供允许CSS设置属性值的钩子。 它封装了CSS属性名称,转换CSS值的类型和属性的默认值。CssMetaData是可以在.css文件中语法表示的值之间的桥梁,以及一个
StyleableProperty
。 CssMetaData和StyleableProperty之间有一对一的对应关系。 通常,节点的CssMetaData将包含其祖先的CssMetaData。 例如,Rectangle的CssMetaData包括Shape的CssMetaData和Node。 在CSS处理过程中,CSS引擎遍历节点的CssMetaData,查找每个property
的解析值,转换已解析的值,并设置StyleableProperty上的值。调用方法
Node.getCssMetaData()
以获得List <CssMetaData>。 此方法被频繁调用,谨慎地返回一个静态列表,而不是每次调用创建列表。 按照惯例,具有CssMetaData的节点类将实现一个静态方法getClassCssMetaData()
,通常只有getCssMetaData()
返回getClassCssMetaData()
。getClassCssMetaData()
的目的是允许子类容易地包含一些祖先的CssMetaData。StyleablePropertyFactory
大大简化了创建一个StyleableProperty及其相应的CssMetaData。这个例子是一个典型的实现。
private DoubleProperty gapProperty = new StyleableDoubleProperty(0) { @Override public CssMetaData<MyWidget,Number> getCssMetaData() { return GAP_META_DATA; } @Override public Object getBean() { return MyWidget.this; } @Override public String getName() { return "gap"; } }; private static final CssMetaData GAP_META_DATA = new CssMetaData<MyWidget,Number>("-my-gap", StyleConverter.getSizeConverter(), 0d) { @Override public boolean isSettable(MyWidget node) { return node.gapProperty == null || !node.gapProperty.isBound(); } @Override public StyleableProperty<Number> getStyleableProperty(MyWidget node) { return (StyleableProperty<Number>)node.gapProperty; } }; private static final List<CssMetaData<? extends Node, ?>> cssMetaDataList; static { List<CssMetaData<? extends Node, ?>> temp = new ArrayList<CssMetaData<? extends Node, ?>>(Control.getClassCssMetaData()); temp.add(GAP_META_DATA); cssMetaDataList = Collections.unmodifiableList(temp); } public static List<CssMetaData<? extends Node, ?>> getClassCssMetaData() { return cssMetaDataList; } @Override public List<CssMetaData<? extends Node, ?>> getCssMetaData() { return getClassCssMetaData(); }
- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
StyleablePropertyFactory
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
CssMetaData(String property, StyleConverter<?,V> converter)
使用给定的参数构造一个CssMetaData,initialValue为null,inherit设置为false,没有子属性。protected
CssMetaData(String property, StyleConverter<?,V> converter, V initialValue)
使用给定的参数构造一个CssMetaData,继承设置为false并且没有子属性。protected
CssMetaData(String property, StyleConverter<?,V> converter, V initialValue, boolean inherits)
用给定的参数构造一个CssMetaData,没有子属性。protected
CssMetaData(String property, StyleConverter<?,V> converter, V initialValue, boolean inherits, List<CssMetaData<? extends Styleable,?>> subProperties)
用给定的参数构造一个CssMetaData,没有子属性。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 boolean
equals(Object obj)
如果两个CssMetaData对象的property
值相等,则认为它们是相等的。StyleConverter<?,V>
getConverter()
V
getInitialValue(S styleable)
CssMetaData的初始值对应于代码中StyleableProperty的默认值。String
getProperty()
abstract StyleableProperty<V>
getStyleableProperty(S styleable)
返回给定节点的相应StyleableProperty
。List<CssMetaData<? extends Styleable,?>>
getSubProperties()
子属性是指该属性的组成属性(如果有)。int
hashCode()
返回对象的哈希码值。boolean
isInherits()
如果为true,则此属性的值与父属的此属性的计算值相同。abstract boolean
isSettable(S styleable)
检查给定节点上的相应属性是否可设置。void
set(S styleable, V value, StyleOrigin origin)
已过时。String
toString()
返回对象的字符串表示形式。
-
-
-
构造方法详细信息
-
CssMetaData
protected CssMetaData(String property, StyleConverter<?,V> converter, V initialValue, boolean inherits, List<CssMetaData<? extends Styleable,?>> subProperties)
用给定的参数构造一个CssMetaData,没有子属性。- 参数
-
property
- CSS属性 -
converter
- StyleConverter用于将CSS解析的值转换为Java对象。 -
initialValue
- 相应StyleableProperty的初始值或默认值 -
inherits
- 如果此属性使用CSS继承,inherits
true -
subProperties
- 此属性的子属性。 例如,-fx-font属性具有子属性-fx-font-family,-fx-font-size,-fx-font-weight和-fx-font-style。
-
CssMetaData
protected CssMetaData(String property, StyleConverter<?,V> converter, V initialValue, boolean inherits)
用给定的参数构造一个CssMetaData,没有子属性。- 参数
-
property
- CSS属性 -
converter
- 用于将CSS解析的值转换为Java对象的StyleConverter。 -
initialValue
- 相应StyleableProperty的初始值或默认值 -
inherits
- 如果此属性使用CSS继承,inherits
true
-
CssMetaData
protected CssMetaData(String property, StyleConverter<?,V> converter, V initialValue)
使用给定的参数构造一个CssMetaData,继承设置为false并且没有子属性。- 参数
-
property
- CSS属性 -
converter
- 用于将CSS解析值转换为Java对象的StyleConverter。 -
initialValue
- 相应StyleableProperty的初始值或默认值
-
CssMetaData
protected CssMetaData(String property, StyleConverter<?,V> converter)
使用给定的参数构造一个CssMetaData,initialValue为null,inherit设置为false,没有子属性。- 参数
-
property
- CSS属性 -
converter
- 用于将CSS解析值转换为Java对象的StyleConverter。
-
-
方法详细信息
-
set
@Deprecated(since="8") public void set(S styleable, V value, StyleOrigin origin)
设置给定节点上相应属性的值。- 参数
-
styleable
- 要设置属性值的样式 -
value
- 设置属性的值 -
origin
- 起源
-
isSettable
public abstract boolean isSettable(S styleable)
检查给定节点上的相应属性是否可设置。 在给定属性查找任何样式之前调用此方法。 它是抽象的,以便代码可以检查属性是否可以设置,而不扩展属性。 一般而言,如果属性不为空或不受约束,则该属性是可设置的。- 参数
-
styleable
- 要设置属性值的样式 - 结果
- 如果可以设置属性,则为true。
-
getStyleableProperty
public abstract StyleableProperty<V> getStyleableProperty(S styleable)
返回给定节点的相应StyleableProperty
。 请注意,调用此方法将导致扩展属性。- 参数
-
styleable
- 返回属性的样式 - 结果
- 与给定Styleable的此CssMetaData相对应的StyleableProperty
-
getProperty
public final String getProperty()
- 结果
- CSS属性名称
-
getConverter
public final StyleConverter<?,V> getConverter()
- 结果
- 处理从CSS值到Java对象的转换的CSS转换器
-
getInitialValue
public V getInitialValue(S styleable)
CssMetaData的初始值对应于代码中StyleableProperty的默认值。 例如,Shape.fill的默认值为Color.BLACK,Shape.StyleableProperties.FILL的initialValue也是Color.BLACK。然而,这可能是例外。 initialValue可能取决于Node的状态。 ScrollBar具有水平的默认方向。 但是,如果ScrollBar是垂直的,则此方法应返回Orientation.VERTICAL。 否则,当应用初始值时,垂直ScrollBar将被错误地设置为水平ScrollBar。
- 参数
-
styleable
- 风格 - 结果
- 属性的初始值,可能为null
-
getSubProperties
public final List<CssMetaData<? extends Styleable,?>> getSubProperties()
子属性是指该属性的组成属性(如果有)。 例如,“-fx-font-weight”是“-fx-font”的子属性。- 结果
- 子属性列表
-
isInherits
public final boolean isInherits()
如果为true,则此属性的值与父属的此属性的计算值相同。- 结果
- 默认情况下为false,除非inherits为true
- 另请参见:
- CSS Inheritance
-
equals
public boolean equals(Object obj)
如果两个CssMetaData对象的property
值相等,则认为它们相等。- 重写:
-
equals
在Object
- 参数
-
obj
- 与之比较的参考对象。 - 结果
- 如果obj相等,则为true,否则为false
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
描述从类别复制:Object
返回对象的哈希码值。 支持这种方法有利于哈希表,如HashMap
提供的那样 。hashCode
的一般合同是:- 在执行Java应用程序时,无论何时在同一对象上多次调用该对象,则
hashCode
方法必须始终返回相同的整数,前提是修改了对象中equals
对比中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 - 如果根据
equals(Object)
方法两个对象相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果。 - 不要求如果两个对象根据
Object.equals(java.lang.Object)
方法不相等,则在两个对象中的每个对象上调用hashCode
方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。
尽可能多的合理实用,由类
Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (在某个时间点,hashCode可能或可能不被实现为对象的存储器地址的某些功能。)- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
- 在执行Java应用程序时,无论何时在同一对象上多次调用该对象,则
-
-