有人可以向我解释 FormLayout 上的 FormData 是如何工作的吗?我试图了解 FormAttachment 构造函数及其参数(分子、偏移量、分母)。你什么时候只需要其中一个,其中两个或所有参数......另外,如果我有一个组(或一个组合)将添加按钮和标签等小部件,这些小部件需要根据分辨率使用FormData,Group 也需要有 FormLayout 吗?我尝试使用表单布局指定组的宽度但没有更改
最佳答案
FormAttachment 有几个不同的构造函数,我一般使用两个比较典型:
new FormAttachment (int numerator, int offset) - 如果只有两个整数参数,则第一个参数表示距离父级边缘的百分比。哪条边取决于您将 FormAttachment 插入到 FormData 对象中的哪个槽:FormData.top、data.bottom、data.left 和 FormData.right。
new FormAttachment (Control control, int offset) - 这不是将对象定位在父对象上,而是将对象定位在另一个子对象旁边。这与前面的构造函数结合使用,以便您有效地将一个元素“ anchor 定”到父元素上,然后通过相对于 anchor 定位其他元素来构建布局。这也使您可以轻松地将元素移动和插入到整体布局中,而无需重建整个布局。
其他是这两个主题的变体。 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 部分。
关于swt - FormLayout、FormData 和控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11864803/