FormLayout,FormData和控件

时间:2012-08-08 12:44:23

标签: swt eclipse-rcp jface

有人可以向我解释一下FormLayout上的FormData是如何工作的吗?我试图理解FormAttachment构造函数及其参数(分子,偏移量,分母)。什么时候只需要其中一个,其中两个或所有参数...另外,如果我有一个组(或复合),它将添加按钮和标签等小部件,需要根据分辨率调整大小FormData,集团是否还需要FormLayout?我尝试使用表单布局指定组的宽度但没有更改

1 个答案:

答案 0 :(得分:4)

FormAttachment有几个不同的构造函数,我通常使用两个:

new FormAttachment(int numerator,int offset) - 如果只有两个整数参数,则第一个参数表示父项边缘的百分比。哪个边缘由FormData对象中的哪个插槽确定,您将FormAttachment插入到:FormData.top,data.bottom,data.left和FormData.right。

new FormAttachment(Control control,int offset) - 不是将对象放在父对象上,而是将对象放在另一个子对象旁边。这与前一个构造函数一起使用,以便您有效地“锚定”一个元素与父元素,然后通过相对于锚定位其他元素来构建您的布局。这样,您还可以轻松地将元素移动并插入整体布局,而无需重建整个布局。

其他是这两个主题的变体。 FormAttachment(int numerator,int denominator,int offset)与具有两个整数参数的FormAttachment相同,但是两个分母只是变为“100”,即它将分子变为百分比。但是对于1/3的空间,你可以说(1,2,0),或者(1,3,0)。

我不确定你对集团是否需要定义布局有什么意思,但通常每个父复合都必须在其上定义一个布局来显示子元素。如果您希望元素在父级调整大小时调整大小,则可以选择将子级附加到元素的左侧和右侧:

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部分。