我有3个ToolItem:text,item1,item2
我希望该文字项目与左侧对齐,项目1和项目2将与右侧对齐
例如
text item1,item2
这是代码
ToolBar treeToolBar = new ToolBar(treeComposite,SWT.NONE);
filterText = new Text(treeToolBar, SWT.BORDER);
ToolItem textItem = new ToolItem(treeToolBar, SWT.SEPARATOR);
textItem.setControl(filterText);
textItem.setWidth(filterText.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
Item1 = new ToolItem(treeToolBar, SWT.PUSH | SWT.RIGHT);
item2 = new ToolItem(treeToolBar, SWT.PUSH | SWT.RIGHT);
答案 0 :(得分:2)
如果您只想让item1和item2位于中间的某个位置,请添加一个样式为SWT.SEPARATOR
的新项目,并设置所需的宽度以抵消这两个项目。
如果您确实希望这两个项目位于工具栏的右侧,则必须动态计算该分隔符的大小。基本上你从工具栏的大小中减去三个项目的大小(一个文本和两个推送项目)。
这是一个完整的片段,文本左侧对齐,右侧按钮对齐。 toolbar.pack()
调用也是计算项目和修剪之间使用的空间所必需的。我们也必须考虑到这一点。
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Composite treeComposite = new Composite(shell, SWT.NONE);
treeComposite.setLayout(new GridLayout());
final ToolBar treeToolBar = new ToolBar(treeComposite, SWT.NONE);
treeToolBar.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
final Text filterText = new Text(treeToolBar, SWT.BORDER);
final ToolItem textItem = new ToolItem(treeToolBar, SWT.SEPARATOR);
textItem.setControl(filterText);
textItem.setWidth(filterText.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
final ToolItem separator = new ToolItem(treeToolBar, SWT.SEPARATOR);
separator.setWidth(0);
final ToolItem item1 = new ToolItem(treeToolBar, SWT.PUSH | SWT.RIGHT);
item1.setImage(display.getSystemImage(SWT.ICON_WORKING));
final ToolItem item2 = new ToolItem(treeToolBar, SWT.PUSH | SWT.RIGHT);
item2.setImage(display.getSystemImage(SWT.ICON_QUESTION));
treeToolBar.pack();
final int trimSize = treeToolBar.getSize().x - textItem.getWidth() - item1.getWidth() - item2.getWidth();
treeToolBar.addListener(SWT.Resize, new Listener() {
@Override
public void handleEvent(Event event) {
final int toolbarWidth = treeToolBar.getSize().x;
final int itemsWidth = textItem.getWidth() + item1.getWidth() + item2.getWidth();
final int separatorWidth = toolbarWidth - itemsWidth - trimSize;
separator.setWidth(separatorWidth);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}