0
我嘗試創建具有3列但沒有間距的視圖。更重要的是我需要有中央的列,其寬度由容器的整體寬度決定(因此可以抓住多餘的水平空間)。沒有間距的SWT佈局允許給定小部件的水平填充
GridLayout允許我創建3箇中心填充容器的列寬,但是我不能在這個佈局中的單元格之間的間距等於零。另一方面,在FillLayout中,指定等於零非常容易,但不可能使中心列寬由容器寬度確定。
你能告訴我如何用SWT佈局實現我的目標嗎?
我嘗試創建具有3列但沒有間距的視圖。更重要的是我需要有中央的列,其寬度由容器的整體寬度決定(因此可以抓住多餘的水平空間)。沒有間距的SWT佈局允許給定小部件的水平填充
GridLayout允許我創建3箇中心填充容器的列寬,但是我不能在這個佈局中的單元格之間的間距等於零。另一方面,在FillLayout中,指定等於零非常容易,但不可能使中心列寬由容器寬度確定。
你能告訴我如何用SWT佈局實現我的目標嗎?
您可以設置verticalSpacing
和GridLayout
到0
horizontalSpacing
刪除間距:
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);
}
}
那是什麼樣子(注意邊界相鄰無間距):
謝謝,你做了我的一天,實際上甚至是週末。我不知道爲什麼,但我無法實現這一目標。再次感謝。 – wojtek88