??? 我們的日期控件有兩大部分組成:控件主體和下拉列表。
要做成通用控件,控件主體必須要能自適應大小。
老規矩,上圖:
設計界面:

在其它容器中自由使用的效果圖:

那么怎么才能做到自寫的控件能自適應大小呢?Composite+FormLayout是實現這種效果的完美組合。通俗的說Composite就是一個容器,里面能放各種其它控件,當然Composite本身也能放到其它容器里面。FormLayout是一種布局方式,精髓是“相對位置”。( 跟我學之用FormLayout打造自適應窗體大小的控件布局)。
在Composite我們放置一個文本框和一個按鈕。
這里我們設置
文本框上邊相對Composite上邊,偏移量0。
文本框左邊相對Composite左邊,偏移量0。
文本框右邊相對按鈕,偏移量0。
文本框下邊相對Composite下邊,偏移量0。
按鈕上邊相對Composite上邊,偏移量0。
按鈕左邊相對Composite右邊邊,偏移量17。
按鈕右邊相對Composite右邊,偏移量0。
按鈕下邊相對Composite下邊,偏移量0。這樣我們就整體實現文本框。按鈕的高度跟隨
Composite變化。
按鈕寬度固定。文本框寬度跟隨
Composite變化。
代碼片段:
????????arrow?=?new?Button(this,?arrowStyle);
????????arrow.addSelectionListener(arrowListener);
????????final?FormData?formData?=?new?FormData();
????????formData.left?=?new?FormAttachment(100,?-17);
????????formData.right?=?new?FormAttachment(100,?-0);
????????formData.top?=?new?FormAttachment(0,?0);
????????formData.bottom?=?new?FormAttachment(100,?-0);
????????arrow.setLayoutData(formData);

????????text?=?new?Text(this,?SWT.READ_ONLY);
????????final?FormData?formData_1?=?new?FormData();
????????formData_1.right?=?new?FormAttachment(arrow,?0,?SWT.LEFT);
????????formData_1.top?=?new?FormAttachment(0,?0);
????????formData_1.bottom?=?new?FormAttachment(100,?-0);
????????formData_1.left?=?new?FormAttachment(0,?0);
????????text.setLayoutData(formData_1);
posted on 2006-12-25 13:26
交口稱贊 閱讀(1976)
評論(0) 編輯 收藏 所屬分類:
Eclipse RCP SWT