在 Apache Pivot WTKX源文件中的某些组件会使用wtkx:id 对组件进行命名,我们称为“命名对象(named object)”。
在编写Java代码时,我们经常要引用到WTKX中的命名对象,比如为某个控件添加事件监听器,修改组件的属性等。
有两种方式可以在Java代码中引用到WTKX中命名对象。
1.直接通过 WTKXSerializer#get方法,给get方法传递在WTKX文件中的命名名称,就可以获得相应的组件。
Label lab = (Label)wtkxSerializer.get("label“);
2.使用 @wtkx注解配合 WTKX绑定。
首先要定义一个Java的成员变量,并使用 @wtkx注解,如
@wtkx private Label label;
在创建WTKXSerializer对象并加载wtkx源文件后调用WTKXSerializer#bind方法。bind方法会根据wtkx文件中的命名对象的名称自动和@wtkx注解的成员变量进行绑定(可能是通过wtkxSerializer.get实现)。
@wtkx注解的变量也可以是public的成员。变量名称必须和wtkx中的命名对象的名称和类型一致。
例如下面的例子来自 WTKX Primer#WTKX binding的一个例子
1 | < Window xmlns = "org.apache.pivot.wtk" |
2 | xmlns:wtkx = "http://pivot.apache.org/wtkx" > |
3 | < content > |
4 | < Label wtkx:id = "label" text = "Hello, World!" /> |
5 | </ content > |
6 | < Window > |
Java声明代码:
@WTKX private
Label label;
1. 使用get获得命名对象的引用,比较自由,但是每次获取时都需要名声一个局部变量并调用get函数。
2.使用@wtxk绑定时,使用比较方便,但是对于嵌套WTKX文件的命令对象,比如 content.label 可以使用 @WTKX("content.label)