有人可以向我解释一下 FormLayout 上的 FormData 是如何工作的吗?我试图了解 FormAttachment 构造函数及其参数(分子、偏移量、分母)。你什么时候只需要其中一个,其中两个或所有参数......另外,如果我有一个组(或复合),它将添加按钮和标签等小部件,需要根据分辨率调整大小FormData,Group 是否也需要有一个 FormLayout?我尝试使用表单布局指定组的宽度但没有变化
1 回答
FormAttachment 有几个不同的构造函数,我通常使用两个:
new FormAttachment (int numerator, int offset) - 如果只有两个整数参数,则第一个参数表示距父节点边缘的百分比。哪条边由您将 FormAttachment 插入的 FormData 对象中的哪个槽确定:FormData.top、data.bottom、data.left 和 FormData.right。
new FormAttachment (Control control, int offset) - 这不是将对象定位在父对象上,而是将对象定位在另一个子对象旁边。这与前面的构造函数一起工作,以便您有效地将一个元素“锚定”到父元素上,然后通过相对于锚点定位其他元素来构建布局。这还允许您轻松地将元素移动和插入到整体布局中,而无需重建整个布局。
其他的是这两个主题的变体。FormAttachment(int numerator, int denominator, int offset)和FormAttachment一样,有两个整数参数,但是有两个分母就变成了“100”,即把分子变成百分比。但是你可以说像 (1, 2, 0) 代表 1/2 的跨度或 (1, 3, 0) 代表 1/3 的空间。
我不确定 Group 是否需要定义布局是什么意思,但通常每个父 Composite 都必须在其上定义布局以显示子元素。如果您希望元素随着父元素的大小调整大小,一种选择是将子元素附加到元素的左侧和右侧:
FormData formData = new FormData();
formData.left = new FormAttachment (0, 0); // Attach at the 0% left with 0 offset
formData.right = new FormAttachment (100, 0); // Attach at the 100% right with 0 offset
Eclipse 站点有很多显示 FormLayout 的优秀片段,请查看:
http://www.eclipse.org/swt/snippets/
向下滚动到 FormLayout 部分。