在 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)