【发布时间】:2014-02-15 21:35:42
【问题描述】:
这是关于
目前我正在研究 JavaFX 8 中存在的新 CSS API,但我无法理解某些内容。
问题
我正在阅读有关 CssMetaData 类的文档,并且在某个时间说以下内容:
调用Node.getCssMetaData()方法获取 列表。此方法调用频繁,谨慎 返回静态列表,而不是在每次调用时创建列表。经过 约定,具有 CssMetaData 的节点类将实现静态 方法 getClassCssMetaData() 并且习惯上具有 getCssMetaData() 只返回 getClassCssMetaData()。的目的 getClassCssMetaData() 是为了让子类轻松包含 某个祖先的 CssMetaData。
在 Node 类中,我们可以找到 getCssMetaData 方法。据我了解,从 JavaFX 版本 8 开始,节点现在可以存储 CssMetaData 对象列表,这些对象将 CSS 属性与节点的每个属性(如果需要)连接起来。例如,Rectangle 类可以在该列表中插入它自己的 CssMetaData 实例,也可以通过 Shape CssMetaData 实例和 Node.js 输入。最后,CSS JavaFX 引擎会读取这个列表,将 CSS 属性的值转换为 JavaFX bean 的属性值,从而设置类的属性值(如果他们做过这样的属性配置)。
文档的含义是什么,为什么?在 CssMetaData 文档中有一个如何完成的示例。在 sn-p 中,会出现以下内容:
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 bean 属性连接到 CSS 属性的类中。出于什么原因,我必须再次在我的班级中创建 CssMetaData 列表? Node 类还没有? getCssMetaData 方法不是抽象的,这使得 Node 似乎实现了自己的列表,这(再次)导致客户端程序员考虑使用这样的列表而无需这样做。 Node 类甚至有 getCssMetaData 方法。 :s
谁能用一种简单明了的方式为我澄清这一点(即使你必须多写一点)?或者在 JavaFX API 8 和 this link 之外还有其他地方吗(顺便说一下,我从来没有见过像 here 这样解释得这么糟糕的东西。抱歉)这样我就可以了解更多关于新的 JavaFX CSS API 8 的信息?
OBS:我想将我提到的每个课程的链接放在这里。但是,今天(GMT - 3 ---- 15:59 pm)JavaFX 8 文档处于脱机状态。对不起。
感谢您的关注。
【问题讨论】:
标签: java css api javafx java-8