象其它的layout类一样,FormLayout用的data类是:FormData。FormData用另外一
个类来控制窗口小部件的大小和位置:
FormAttachment.一个FormData最多用4个FormAttachment,它们分别对应这个小部件的4个面:顶部,底部,左边和右
边。FormAttachment定义了小部件在parent composite或是这个composite里其它部件的位置。
FormAttachment计算位置和大小的方法:
y=ax+b
在这个等式中,在数学上y代表的是纵坐标,x是横坐标值.a是斜率,b是偏移量.按照FormAttachment的规则,y是高,x是宽度,a是一个相对其它部件的百分率,b是偏移量.FormAttachment实例中的每个数据成员分别代表这些值.
以下(表一)是FormAttachment的数据成员表和相应的意思:
表一:FormAttachment数据成员
Attribute
Description
int alignment
|
指定是以另外一个部件的哪一边为基准的.可能的值是:SWT.TOP
, SWT.CENTER
, 和 SWT.BOTTOM.默认是以最近的一边为基准.
|
Control control
|
指定FormAttachment是以哪个部件为参照物.
|
int denominator
|
指定分母.默认值为100
|
int numerator
|
指定分子
|
int offset
|
指定离composite边界或部件的边界的偏移量.单位是象素.
|
FormAttachment
拥有5个构造函数,没有一个是空的,它们如下表(表二)所示:
表二:FormAttachment
的构造函数:
Constructor
Description
FormAttachment(Control control)
|
以另外的某个部件为参照物.
|
FormAttachment(Control control, int offset)
|
以另外的某个部件为参照物,加上偏移量.
|
FormAttachment(Control control, int offset, int alignment)
|
以另外的某个部件为参照物,加上偏移量和alignment
|
FormAttachment(int numerator)
|
设定分子.分母为100,没有偏移量
|
FormAttachment(int numerator, int offset)
|
指定分子和偏移量和100的分母
|
FormAttachment(int numerator, int denominator, int offset)
|
特定的分子,分母,偏移量
|
FormData最多包含4个FormAttachment实例,每个对应了与它联系的部件的一边.另外,FormData也可以指定宽和高.表四列出了FormData的数据成员:
Attribute
Description
FormAttachment bottom
|
The FormAttachment
corresponding to the bottom side of the control.
这个FormAttachment
用来指定部件的底部位置
|
int height
|
这个部件的高度.单位为象素.
|
FormAttachment left
|
这个FormAttachment
用来指定部件的左部位置
|
FormAttachment right
|
这个FormAttachment
用来指定部件的右部位置
|
FormAttachment top
|
这个FormAttachment
用来指定部件的顶部位置
|
int width
|
这个部件的宽度.单位为象素.
|
当你生成一个FormData对象,你可以自己传给它宽和高的值.如果你没有指定FormAttachment
对象,部件会自动以parent composite的上边界和左边为起始边界.如果你这样定义了多个部件,它们会都在composite的左上角.
FormLayout
有
两个数据成员 marginHeight和marginWidth,用来以象素为单位来指定大小.它们用来指定包围composite里所有内容的空白.
marginHeight对应的是顶部和底部的空白大小,marginWidth对应的是左边和右边的空白大小.空白的默认值是0.
以上的话如果你看得不大懂也没有关系,我们按照具体的例子来看就知道了.
用到FormLayout的最简单的例子就是一个窗口里一个按钮,并且不用FormData.
//FormLayoutSimple.java
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.SWT;
public class FormLayoutSimple {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FormLayout());
new Button(shell, SWT.PUSH).setText("Button");
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
运行后是这个样子:
你可以通过设定marginHeight和marginWidth值改变周围的空白.
代码象这样:
FormLayout layout = new FormLayout();
layout.marginHeight = 5;
layout.marginWidth = 10;
shell.setLayout(layout);
结果象这样:
但是,只有用FormData和FormAttachment你才能做更多的事.
试着使用FormData,但是不用FormAttachment
s,FormData有公共成员属性height和width用来改变按钮的大小.
分享到:
相关推荐
在SWT(Standard Widget Toolkit)框架中,FormLayout是一种非常灵活且强大的布局管理器,主要用于控制组件在容器中的位置和大小。它允许开发者通过精确指定组件的边界来实现复杂的用户界面设计。FormLayout非常适合...
`FormLayout`是SWT中的一个布局管理器,专门用于构建复杂的、自适应的表单布局。 `FormLayout`的核心概念是通过附件(`FormAttachment`)和数据(`FormData`)来定位和调整控件的位置。`FormAttachment`定义了一个相...
SWT提供了几种布局管理器,如FillLayout、GridLayout、FormLayout等,用于控制控件在窗口中的位置和大小。 `Swt常用控件中文教程 - E动中国.files`可能包含的是教程的辅助资源,如图片、样式表或者示例代码。这些...
在开发SWT应用时,了解SWT的基本组件和布局管理器是很重要的,例如Button、Label、Text、Composite等控件,以及FillLayout、GridLayout、FormLayout等布局。此外,SWT还提供了事件处理机制,允许开发者响应用户的...
**JGoodies FormLayout** 是一个强大的 Java Swing 布局管理器,它为开发者提供了更灵活、可读性更强的方式来组织组件在容器中的布局。相比于 Swing 内置的布局管理器,如 FlowLayout、GridLayout 和 BorderLayout,...
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....
在SWT中,开发者可以使用各种组件来构建GUI,如Button、Text、Label、Shell、Composite、Tree、Table等。这些组件提供了丰富的事件处理机制,允许开发者响应用户的操作。例如,Button组件可以处理点击事件,Text组件...
java swing 布局所需组件formlayout所需jar包 jgoodies-common-1.6.0 jgoodies-forms-1.7.2 本人在烽火期间,使用的就是FormLayout布局,简单易用、功能强大,适用于swing企业和感兴趣的Java可视化兴趣爱好者。如果...
### SWT布局管理器在Java中的应用详解 在Java的图形用户界面(GUI)开发领域,Swing和SWT是两个广泛使用的框架。Swing是Java的一部分,而SWT(Standard Widget Toolkit)则是Eclipse项目的一部分,专门针对原生操作...
2. **布局管理**:SWT支持多种布局管理器,如填充布局(FillLayout)、网格布局(GridLayout)、表单布局(FormLayout)等,这些布局管理器帮助开发者有效地组织和定位组件在窗口中的位置。 3. **事件处理**:SWT...
2. **布局管理**:SWT中,有多种布局管理器,如FillLayout、GridLayout、RowLayout、FormLayout等,它们用于控制组件在容器中的排列和尺寸分配。例如,GridLayout可以方便地创建网格状布局,而FormLayout则适合进行...
在SWT中,每个控件都有对应的本地实现,这使得SWT应用程序看起来和感觉上更接近于原生应用,无论是Windows、Linux还是Mac OS。例如,SWT提供了按钮(Button)、文本框(Text)、列表(List)、树(Tree)、表(Table...
布局管理在SWT中扮演着重要角色,它决定了组件在窗口中的位置和大小。SWT提供了多种布局管理器,如FillLayout、GridLayout、RowLayout和FormLayout,每种布局都有其适用场景,需要根据实际需求选择合适的布局。 ...
2. **布局管理器**:在SWT中,有多种布局管理器,如FillLayout、GridLayout、 MigLayout 和 FormLayout等。它们用于控制控件在容器中的排列方式和空间分配。例如,GridLayout可将控件按照网格布局,而FormLayout允许...
SWT,全称为Standard Widget Toolkit,是Java编程中用于创建图形用户界面(GUI)的一种开源库。它由Eclipse基金会维护,与Java Swing并行存在,提供了与操作系统更紧密的集成,使得应用程序能够呈现出原生的外观和...
2. **布局管理**:在SWT中,布局(Layout)用于控制组件在父容器中的排列方式。常见的布局有填充分布(FillLayout)、网格布局(GridLayout)、单列表布局(RowLayout)和自由布局(FormLayout)等。 3. **事件处理...
2. 表单组件:在SWT中,表单由各种控件组成,如Text用于输入文本,Checkbox用于复选选项,ComboBox用于下拉选择等。这些组件可以通过布局管理器(如GridLayout、FillLayout、FormLayout等)进行排列。 3. 布局管理...
在SWT中,布局管理器是一个关键概念,它负责控制控件在窗口或容器中的位置和大小。以下是关于SWT布局管理器的详细解释: 1. **FillLayout**: - FillLayout是最简单的布局管理器之一,它将所有子组件以相同的大小...
SWT提供了几种布局管理器,如FillLayout、GridLayout、FormLayout等,用于控制组件在容器中的排列方式和大小调整。 5. SWT与JFace JFace是建立在SWT之上的抽象层,简化了SWT的使用,提供了一些高级组件,如对话框...
3. SWT事件和监听器:在SWT中,事件处理是通过添加监听器到组件上实现的。例如,ButtonListener可以监听按钮的点击事件,SelectionListener可以监听多种类型的选中事件。开发者可以通过实现相应的接口或者继承特定的...