WTKX的元素的属性类型有多种:
1.标准的JavaBean属性,代表JavaBean 中的一个setter方法。
2.只读序列属性
3.只读字典属性
4.静态属性
在这里我们主要讨论静态属性,因为静态属性和其它三个属性不相同。
对于 标准JavaBean属性,由于有相应的setter方法,因此我们可以确定该属性属于 元素的一个域(字段)。
对于只读属性,只读系列属性,该属性属于 元素中的某个 系列字段的一个元素,而字段属性属于字典字段的一个键值对。
因此对于前面三种属性,与其元素都是有着严格的父子关系,也就是元素应该是属性的parent。
当是对于静态属性,此时属性的parent并不是元素本身。代表的应该是一种关联的语义,用于关联属性所在的元素与元素的父节点之间的某种关系。
例如下面的WTKX primer例子:
< TabPane xmlns = "org.apache.pivot.wtk" > |
2 | < tabs > |
3 | < Label TabPane.label = "First Tab" text = "Tab 1" /> |
4 | < tabs > |
5 | </ TabPane > |
Label 元素的属性TabPane.label 并不是Label的某个域,也不是其序列域或者字典域中的某个元素或者键值对。而是用于关联 Label和tabs的关系。 TabPane中的第一个tab按钮显示的文本并不是 "Tab 1",而是"First Tab”,"Tab 1"是第一个tab面板的显示内容。
我们开看一下上面WTKX代码相应的Java代码,或许对能够帮助我们更容易的理解静态属性这个概念:
1 | TabPane tabPane = new TabPane(); |
2 | Label label = new Label(); |
3 | label.setText( "Tab 1" ); |
4 | tabPane.getTabs().add(label); |
5 | TabPane.setLabel(label, "First Tab" ); |
我们可以看到,虽然静态属性在 Label元素中是放在第一个声明定义,当是在java代码中她却是最后一个被调用的。原因是,
要先创建Label对象,再把Label对象加入tab中,作为第一个tab的面板的内容,最后设置第一个tab的标签按钮的文本,就使用了静态属性来关联tab面板内容和tab按钮。
本质上:
TabPane.label的目的是为了设置tab内容对应的tab按钮的文本标签,还有一个类似的静态属性TabPane.icon用于设置tab按钮的图标。
上面例子中的Label元素只是TabPane的第一个tab的面板的内容,可以使用其他任意的组件替代。
WTKX还有很多其它的静态属性,例如 From.falg 等,请参考Pivot的相关文档。