我尝试创建具有3列但没有间距的视图。更重要的是,我需要使中心列的宽度由容器的总宽度决定(因此它占据了多余的水平空间)。
GridLayout允许我创建3列宽度的中央填充容器,但是无法使此布局中的单元格之间的间距等于零。另一方面,在FillLayout中,使规格等于零非常容易,但是不可能使中心列的宽度由容器的宽度确定。
您能告诉我如何通过SWT布局实现目标吗?
最佳答案
您可以将verticalSpacing
的horizontalSpacing
和GridLayout
设置为0
以删除间距:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
GridLayout layout = new GridLayout(3, false);
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
shell.setLayout(layout);
createContent(new Composite(shell, SWT.BORDER), false);
createContent(new Composite(shell, SWT.BORDER), true);
createContent(new Composite(shell, SWT.BORDER), false);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
private static void createContent(Composite parent, boolean hFill)
{
if (hFill)
{
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
parent.setLayout(new GridLayout(3, true));
}
else
{
parent.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, false, true));
parent.setLayout(new GridLayout(1, true));
}
for (int i = 0; i < 6; i++)
{
new Button(parent, SWT.PUSH).setText("Button " + i);
}
}
这就是它的样子(请注意边框之间没有间距):
关于java - SWT布局没有间距,允许水平填充给定的小部件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19318238/