我有一个创建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
答案 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
(水平填充)。
在其他情况下,使用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个插槽。