网格布局
当在 Composite
(或 Composite
的子类)上使用 GridLayout
时,子控件应将其布局数据设置为 GridData
的唯一实例,以指示子项应如何在父项中显示:
// ...
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout());
final Composite child = new Composite(shell, SWT.NONE);
child.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
// ...
未能在子控件上设置 GridData
对象可能会导致孩子无法按照需要定位。此外,如果孩子是 Composite
(或 Composite
的子类),则可能根本看不到孩子及其孩子。
如果使用了错误的布局数据(例如 FormData
而不是 GridData
),结果将是运行时的 ClassCastException
:
线程
main
中的异常 java.lang.ClassCastException:org.eclipse.swt.layout.FormData 无法强制转换为 org.eclipse.swt.layout.GridData