Java 调整工具栏SWT的大小
我正在尝试设置工具栏的高度以匹配网格布局中的其他项目。以下是我正在使用的代码:Java 调整工具栏SWT的大小,java,eclipse-plugin,swt,Java,Eclipse Plugin,Swt,我正在尝试设置工具栏的高度以匹配网格布局中的其他项目。以下是我正在使用的代码: public TestSwt() { Display display = new Display(); shell = new Shell(display, SWT.SHELL_TRIM); shell.setSize(800, 800); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1;
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();
}
我得到的结果是:
我想要的输出是:
我确信我遗漏了一些非常基本的东西。任何帮助都将不胜感激
编辑:
正如Andrew所建议的,我将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");
输出类似于:
GridLayout将允许链接小部件增长到行的高度,并调整行的高度以适应工具栏,并且工具栏希望至少与输出中的一样大。因此,您可能需要明确设置工具栏的高度(以像素为单位),而不是从链接获取工具栏的高度。但您可以登录查看
computeSize()
实际返回的内容
我将为工具栏创建一个GridData,将GridData上的heightHint设置为所需的高度,然后调用ToolBar.setLayoutData
GridData toolBarLayoutData = new GridData();
toolBarLayoutData.heightHint = ...;
toolBar.setLayoutData(toolBaryLayoutData);
GridLayout将允许链接小部件增长到行的高度,并将调整行的高度以适应工具栏,并且工具栏希望至少与输出中的一样大。因此,您可能需要明确设置工具栏的高度(以像素为单位),而不是从链接获取工具栏的高度。但您可以登录查看
computeSize()
实际返回的内容
我将为工具栏创建一个GridData,将GridData上的heightHint设置为所需的高度,然后调用ToolBar.setLayoutData
GridData toolBarLayoutData = new GridData();
toolBarLayoutData.heightHint = ...;
toolBar.setLayoutData(toolBaryLayoutData);
首先,您在组合上设置了一个
GridLayout
——该布局将覆盖您在组合的子项上设置的任何大小。@greg-449:您的建议。工具栏确实不喜欢比它们想要的小。为什么不使用另一个链接呢?当你点击工具栏时,我需要一个弹出窗口。“首先,你在composite
上设置了一个GridLayout
——这个布局将覆盖你在组合子项上设置的任何大小。@greg-449:你的建议。工具栏确实不喜欢比它们想要的小。”。为什么不使用另一个链接呢?当你点击工具栏时,我需要一个弹出窗口。它确实调整了工具栏的大小,但现在文本不可见。编辑问题以反映相同的内容。它确实调整了工具栏的大小,但文本现在不可见。编辑问题以反映同样的情况。