1

我有一个创建 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 
4

1 回答 1

4

每次从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);

否则,可能需要为虚拟s分配一个GridData(水平填充) 。Label


horizontalSpan在其他情况下,使用 也可能很有趣GridData

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

在这种情况下,按钮将占用您布局的 2 个插槽。

于 2012-10-11T17:47:09.230 回答