gpt4 book ai didi

java - 更改 SWT 中嵌套复合 Material 顶边之间的间距

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

是否可以更改 SWT 中两个嵌套复合 Material 顶边之间的间距?

例如,当使用下面的代码时,我得到的结果如下:

enter image description here

我希望红色和蓝色复合 Material 的顶边之间没有任何空间,如下所示:

enter image description here

我尝试使两个组件的高度相同(使用 GridData),但这不起作用。

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

shell.setLayout(new GridLayout());

Composite c1 = new Composite(shell, SWT.NONE);
GridData c1GridData = new GridData(100, 50);
c1.setLayoutData(c1GridData);
c1.setLayout(new GridLayout());
c1.setBackground(display.getSystemColor(SWT.COLOR_BLUE));


Composite c2 = new Composite(c1, SWT.NONE);
GridData c2GridData = new GridData(50, 50);
c2.setLayoutData(c2GridData);
c2.setBackground(display.getSystemColor(SWT.COLOR_RED));

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

}

基于 layouts in SWT 上的这篇文章,看来这个间距可能是由于蓝色复合 Material 的修剪造成的。我尝试创建自己的自定义小部件来扩展 Composite 并覆盖 computeTrim(...) 方法,但这也不起作用...

附注看来这个问题肯定已经被问过,但我在 stackoverflow 上找不到任何与之相关的内容。如果这个问题已经得到解决,请指出正确的讨论,对于重复的帖子,我深表歉意。

最佳答案

给你:

public static void main(String[] args)
{
final Display display = Display.getDefault();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));

final Composite outer = new Composite(shell, SWT.NONE);
outer.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
GridLayout layout = new GridLayout(1, false);
layout.marginHeight = 0;
outer.setLayout(layout);
outer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

final Composite inner = new Composite(outer, SWT.NONE);
inner.setBackground(display.getSystemColor(SWT.COLOR_RED));
inner.setLayout(new GridLayout(1, false));
inner.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

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

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

只需使用 GridLayout#marginHeight 并将其设置为 0

看起来像这样:

enter image description here

关于java - 更改 SWT 中嵌套复合 Material 顶边之间的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457242/

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