gpt4 book ai didi

java - SWT 网格布局宽度

转载 作者:行者123 更新时间:2023-11-29 06:38:50 27 4
gpt4 key购买 nike

我正在尝试使用 SWT 创建一个简单的显示。到目前为止,我成功地显示了我的数据库中的信息并使用 RowLayout 显示它,每行都包含一个 GridLayout。它看起来像这样:

enter image description here

我真正想要的是让行扩展以占据窗口的整个宽度。我如何实现这一点?

感谢您的帮助!

最佳答案

实现此目的的常用方法是使用 GridData .此 GridData 告诉组件如何在其父级内运行,例如如何在 parent 之间传播。

通过使用:

component.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));

您告诉组件在水平方向上占用尽可能多的空间,但在垂直方向上只占用必要的空间。

这是一个小例子,它应该按照您期望的方式运行:

public class StackOverflow
{
public static void main(String[] args)
{
Display display = Display.getDefault();
Shell shell = new Shell(display);

/* GridLayout for the Shell to make things easier */
shell.setLayout(new GridLayout(1, false));

for(int i = 0; i < 5; i++)
{
createRow(shell, i);
}

shell.pack();
shell.open();

while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

private static void createRow(Shell shell, int i)
{
/* GridLayout for the rows, two columns, equal column width */
Composite row = new Composite(shell, SWT.NONE);
row.setLayout(new GridLayout(2, true));

/* Make each row expand horizontally but not vertically */
row.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));

/* Create the content of the row, expand horizontally as well */
Button first = new Button(row, SWT.PUSH);
first.setText("FIRST " + i);
first.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
Button second = new Button(row, SWT.PUSH);
second.setText("SECOND " + i);
second.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
}
}

这是启动后的样子:

enter image description here

调整大小后:

enter image description here


作为旁注:我建议阅读 this来自 Eclipse 关于布局的教程,如果您还没有读过的话。每个 SWT 开发人员都应该读过它。

关于java - SWT 网格布局宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684110/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com