1. 程式人生 > >SWT設定文字隨窗體大小變化

SWT設定文字隨窗體大小變化

zuhabo回覆於28日18點59分  樓上給位已經給了你一個籠統的答案,感興趣的話,你可以自己去試試; 

這裡我主要介紹其中兩種佈局,肯定可以滿足你的要求: 
1.GridLayout佈局 
比較重要的屬性有 
GridData.FILL 通常與GridData類的物件屬性horizontalAlignment和verticalAlignment配合使用,充滿物件屬性指定的空間。 
GridData. FILL_HORIZONTAL 水平充滿,元件充滿網格水平方向的空間。 
GridData. FILL_VERTICAL 垂直充滿,元件充滿網格垂直方向的空間。 
GridData. FILL_BOTH 雙向充滿,元件充滿水平和垂直方向的空間。 

配合以下兩種屬性 
grabExcessHorizontalSpace 搶佔額外的水平空間。 
grabExcessVerticalSpace 搶佔額外的垂直空間。 

既可以達到樓主要的效果了, 
具體例項程式碼如下: 

Text t1=new Text(shell,SWT.BORDER); 
t1.setText("文字框 1"); 
gridData = new GridData(); 
gridData.verticalSpan = 2; //跨兩行 
gridData.horizontalSpan=2; //跨兩列 
gridData.verticalAlignment = GridData.FILL; //垂直方向充滿 
gridData.grabExcessVerticalSpace = true; //搶佔垂直方向額外空間 
gridData.horizontalAlignment = GridData.FILL;//水平方向充滿 
gridData.grabExcessHorizontalSpace = true;//搶佔水平方向額外空間 
t1.setLayoutData(gridData); //gridData用於文字框t1 

============================================================================== 
2.FormLayout佈局 
比較重要的類:FormData和FormAttachment 

Attachment 的含義是附著、貼上。FormAttachment 類就是用來指定元件在父容器中的 
貼上位置。FormAttachment 計算元件貼上位置和元件大小的方法是依據下面的表示式: 
y = ax + b 
表示式中y 是縱座標,從上往下是正方向;x 是橫座標,從左至右是正方向;a 是斜率 
(a=m/n,n≠0),b 是偏移量,沿x、y軸正方向的偏移量為正,反之為負。 

具體例項: 

FormAttachment formAttachment=new FormAttachment(b1); //指定B1為參照物 
FormData formData2=new FormData(50,30); //建立FormData物件,寬度50,高度30 
formData2.left=formAttachment; //b2的左邊緊貼與b1的右邊 
b2.setLayoutData(formData2); //設定b2的佈局資料為formData2 

Button b3=new Button(shell,SWT.PUSH); 
b3.setText("B3"); 
FormData formData3=new FormData();//建立佈局資料物件formData3 
formData3.top=new FormAttachment(b2,10,SWT.BOTTOM);//b2的底邊與b3的頂部距離為10 
formData3.left=new FormAttachment(b2,0,SWT.LEFT);//b2的左邊與b3左邊位移為0, 
//即左邊對齊 
formData3.right=new FormAttachment(b2,0,SWT.RIGHT); //b2的右邊與b3右邊對齊 
b3.setLayoutData(formData3); //設定b3的佈局資料為formData3 

更詳細的例子可以參照《Java程式設計之swt教程》,我的資源空間裡有