2012-10-11 57 views
0

我有一個方法可以創建4個按鈕。按鈕從左到右彼此相鄰。SWT - GridData佈局

|-[b1] [b2] [b3] [b4]-----------------| <- edge of dialog 

我希望能夠有一個空的空間,B2和B3之間

|-[b1] [b2]-----------------[b3] [b4]-| <- edge of dialog 

改變了佈局

GridLayout gridLayout = new GridLayout(6, false); 

但我不知道怎麼去之間的空間按鈕。您可以將一個按鈕分配給佈局中的特定網格編號嗎?

b1 = 1 
b2 = 2 
b3 = 5 
b4 = 6 
+2

您可以在3和4中分配空字符串標籤。 –

回答

3

Layout從左上角到右下角一次填充一個槽。因此,你不能「跳過」插槽。 ,如已經吉爾伯特在評論中提到的,你可以用空標籤,填寫「未使用」槽:

Button buttonOne = new Button(parent, SWT.PUSH); // 1. slot 
Button buttonOne = new Button(parent, SWT.PUSH); // 2. slot 

new Label(parent, SWT.NONE) // 3. slot 
new Label(parent, SWT.NONE) // 4. slot 

Button buttonThree = new Button(parent, SWT.PUSH); // 5. slot 
Button buttonFour = new Button(parent, SWT.PUSH); // 6. slot 

注意,你不要爲它們分配(Label labelOne = ...),因爲你不會使用它們。


這可能是一個好主意,迫使所有列的間距相等,即使用:的

GridLayout gridLayout = new GridLayout(6, true); 

代替

GridLayout gridLayout = new GridLayout(6, false); 

否則,它可能需要分配一個GridData(水平填充)到虛擬Label s。


在其他情況下,它也可能會感興趣使用horizontalSpanGridData的:

Button button = new Button(parent, SWT.PUSH); 
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); 
data.horizontalSpan = 2; 
button.setLayoutData(data); 

在這種情況下,你的佈局按鈕,會佔用2個插槽。