SWT - GridData布局

时间:2012-10-11 17:01:49

标签: java layout swt

我有一个创建4个按钮的方法。按钮从左到右彼此相邻。

|-[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 

1 个答案:

答案 0 :(得分:4)

Layout从左上角到右下角一次填充一个插槽。因此,你不能“跳过”插槽。 但是,正如Gilbert在评论中已经提到的那样,你可以用空标签填充“未使用”的插槽:

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(水平填充)。


在其他情况下,使用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个插槽。