是否可以在 SWT 中更改两个嵌套复合材料的顶边之间的间距?
例如,当使用下面的代码时,我得到这里显示的结果:
我希望红色和蓝色复合材料的顶部之间没有任何空间,如下所示:
我尝试使两个组件的高度相同(使用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();
}
}
根据这篇关于SWT 布局的文章,这个间距似乎是由于蓝色复合材料的修剪。我试图创建我自己的自定义小部件来扩展 Composite 并覆盖该computeTrim(...)
方法,但这也不起作用......
PS似乎这个问题一定已经被问过了,但我在stackoverflow上找不到任何与它相关的东西。如果这已经得到解决,请指出我正确的讨论,我为重复的帖子道歉。