gpt4 book ai didi

java - SWT中如何控制工具栏Item的位置?

转载 作者:行者123 更新时间:2023-12-02 06:32:30 25 4
gpt4 key购买 nike

我有 3 个 ToolItem : text 、 item1 、 item2

我希望文本项目向左对齐,项目 1 和项目 2 向右对齐

例如

 text                         item1,item2

这是代码

工具栏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);

最佳答案

如果您只想将 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();
}

enter image description here

关于java - SWT中如何控制工具栏Item的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938799/

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