我正在尝试设置ToolBar的高度以匹配网格布局中的其他项目。这是我正在使用的代码:
public TestSwt() {
Display display = new Display();
shell = new Shell(display, SWT.SHELL_TRIM);
shell.setSize(800, 800);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
shell.setLayout(gridLayout);
Composite composite = new Composite(shell, SWT.NONE);
composite.setSize(100, 100);
GridLayout childGridlayout = new GridLayout();
childGridlayout.numColumns = 10;
composite.setLayout(childGridlayout);
composite.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
final Link link = new Link(composite, SWT.NULL);
link.setText("Link1");
Link link1 = new Link(composite, SWT.NULL);
link1.setText("Link2");
ToolBar toolBar = new ToolBar(composite, SWT.BORDER | SWT.VERTICAL);
ToolItem item = new ToolItem(toolBar, SWT.PUSH);
item.setText("toolbar");
// Trying to resize toolbar
Point size = toolBar.computeSize(SWT.DEFAULT, link.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
toolBar.setSize(size);
toolBar.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
我得到的输出是:
我想要的输出是:
我确信我遗漏了一些非常基本的东西。任何帮助都将非常感激。
编辑:
正如安德鲁建议我将GridData设置为LayoutData。它确实调整了工具栏的大小,但文本不可见。 使用代码:
GridData toolBarlayout = new GridData(SWT.LEFT, SWT.TOP, true, true);
toolBarlayout.heightHint = link.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
ToolBar toolBar = new ToolBar(composite, SWT.BORDER | SWT.VERTICAL);
toolBar.setLayoutData(toolBarlayout);
ToolItem item = new ToolItem(toolBar, SWT.PUSH|SWT.TOP);
item.setText("toolbar");
输出类似于:
答案 0 :(得分:0)
GridLayout将允许链接小部件增长到行的高度,并将调整行的高度以适应工具栏,并且工具栏希望至少与输出中的大小一样大。因此,您可能必须明确设置ToolBar所需的高度(以像素为单位),而不是从链接中获取。但您可以进行一些登录以查看computeSize()
实际返回的内容。
我会为ToolBar创建一个GridData,将GridData上的heightHint设置为你想要的高度,然后调用toolBar.setLayoutData。
GridData toolBarLayoutData = new GridData();
toolBarLayoutData.heightHint = ...;
toolBar.setLayoutData(toolBaryLayoutData);