GridLayout
是一个非常强大的布局管理器,它可以实现很多复杂的布局,名字中暗示它将所有控件放置在类似网格的布局中.^__^GridLayout
有两个构造函数.
GridLayout的构造函数
构造函数 |
描述 |
public GridLayout() |
建立一个默认的GridLayout
布局. |
public GridLayout(int numColumns, boolean makeColumnsEqualWidth) |
建立一个GridLayout
布局,拥有numColumns
列,如果makeColumnsEqualWidth
为true,
则全部组件将拥有相同的宽度. |
GridLayout
有6个公共的数据成员,相对重要的是numColumns.
GridLayout数据成员
属性 |
描述 |
int horizontalSpacing |
控制一行中两个网格间组件的宽度,像素为单位. |
boolean makeColumnsEqualWidth |
如果为true,
强制全部的列拥有相同的宽度. |
int marginHeight |
控制顶部和底部组件离边缘的距离空间,以像素为单位. |
int marginWidth |
控制左边和右边组件离边缘的距离空间,以像素为单位. |
int numColumns |
此GridLayout
的列数目. |
int verticalSpacing |
控制一列中两个网络间组件的宽度,像素为单位. |
你能使用GridLayout
设置GridData
类来布局更多的复杂组件.GridData
有两个构造函数.
GridData构造函数
构造函数 |
描述 |
public GridData() |
创建默认一个默认的GridData
对象. |
public GridData(int style) |
初始化指定的style风格布局. |
和其它的布局类一样,GridLayout
也提供一些公共的数据成员控制它的状态,它也提供一些常量,你可以在在构造成函数中使用.你可以用过位标志"|"来连接几个不同的效果,但请注意风格不要起冲突.
GridData数据成员
属性 |
描述 |
boolean grabExcessHorizontalSpace |
如果为true,
指示布局器中网格自动填充多余的水平空间,默认为false.
|
boolean grabExcessVerticalSpace |
如果为true,
指示布局器中网格自动填写多余的垂直空间,默认为false.
|
int heightHint |
该行中最小的高度,以像素为单位,默认为SWT.DEFAULT.
|
int horizontalAlignment |
网格中组件水平对齐方式,可能的值为BEGINNING, CENTER, END,
和FILL.
|
int horizontalIndent |
与左边网格的水平缩进,默认为0 |
int horizontalSpan |
设置网格占有的列数目,默认为1 |
int verticalAlignment |
网格中组件垂直对齐方式,可能的值为BEGINNING, CENTER, END,
和FILL.
|
int verticalSpan |
设置网格占有的行数目,默认为1 |
int widthHint |
该列中最小的宽度,以像素为单位,默认为SWT.DEFAULT.
|
GridData常量
常量 |
描述 |
BEGINNING |
非style
值,指定水平或垂直的对齐方式. |
CENTER |
非style
值,指定组件在网格中居中,水平或垂直. |
END |
非style
值,指定水平或垂直的对齐方式. |
FILL |
非style
值,指定组件填充网格,水平或垂直. |
FILL_BOTH |
设置horizontalAlignment
和verticalAlignment
为FILL,
设置grabExcessHorizontalSpace
和grabExcessVerticalSpace
为true.
|
FILL_HORIZONTAL |
设置horizontalAlignment
为FILL,
和设置grabExcessHorizontalSpace
为true.
|
FILL_VERTICAL |
设置verticalAlignment
为FILL,
和设置grabExcessVerticalSpace
为true.
|
GRAB_HORIZONTAL |
设置grabExcessHorizontalSpace
为true.
|
GRAB_VERTICAL |
设置grabExcessVerticalSpace
为true.
|
HORIZONTAL_ALIGN_BEGINNING |
设置horizontalAlignment
为BEGINNING.
|
HORIZONTAL_ALIGN_CENTER |
设置horizontalAlignment
为CENTER.
|
HORIZONTAL_ALIGN_END |
设置horizontalAlignment
为END.
|
HORIZONTAL_ALIGN_FILL |
设置horizontalAlignment
为FILL.
|
VERTICAL_ALIGN_BEGINNING |
设置verticalAlignment
为BEGINNING.
|
VERTICAL_ALIGN_CENTER |
设置verticalAlignment
为CENTER.
|
VERTICAL_ALIGN_END |
设置verticalAlignment
为END.
|
VERTICAL_ALIGN_FILL |
设置verticalAlignment
为FILL.
|
下面我们来看几个例子: |
代码片段:
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
shell.setLayout(gridLayout);
new Button(shell, SWT.PUSH).setText("one");
new Button(shell, SWT.PUSH).setText("two");
new Button(shell, SWT.PUSH).setText("three");
new Button(shell, SWT.PUSH).setText("four");
运行效果:
|
图中可以看到各个Button
的宽度是依靠字体长度来自动设定的,假如你想设置所有的Button
都使用相同的大小该怎么办?使用makeColumnsEqualWidth = true;
吗?不,这样做不行,它回会将各网格的大小设为相同,我们该使用GridData
中相关属性来设置Button.
下面程序中使用了GridData.FILL_BOTH
属性,它将填充所在网格水平或垂直空间,并将多余空间占有,这样不论窗口调整多大,四个Button
都会有相同空间.
当然GridLayout能做的不只是这些,要更复杂的效果,可能多个Composite
配合使用,具体请参见原书第二部分第四章:Apress.The.Definitive.Guide.to.SWT.and.JFace.eBook-LiB.chm
运行效果
初始化:
调整大小后:
完整代码:
package chapter4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**/
/*
*
* @author HexUzHoNG Created on 2005-6-23
*
*/
public
class
GridLayoutDemo
{
public
static
void
main(String[] args)
{
Display display
=
new
Display();
Shell shell
=
new
Shell(display);
GridLayout gridLayout
=
new
GridLayout();
//
设置为2列
gridLayout.numColumns
=
2
;
gridLayout.makeColumnsEqualWidth
=
true
;
shell.setLayout(gridLayout);
GridData gd
=
new
GridData(GridData.FILL_BOTH);
Button butOne
=
new
Button(shell, SWT.PUSH);
butOne.setText(
"
one
"
);
butOne.setLayoutData(gd);
gd
=
new
GridData(GridData.FILL_BOTH);
Button butTwo
=
new
Button(shell, SWT.PUSH);
butTwo.setText(
"
two
"
);
butTwo.setLayoutData(gd);
gd
=
new
GridData(GridData.FILL_BOTH);
Button butThree
=
new
Button(shell, SWT.PUSH);
butThree.setText(
"
three
"
);
butThree.setLayoutData(gd);
gd
=
new
GridData(GridData.FILL_BOTH);
Button butFour
=
new
Button(shell, SWT.PUSH);
butFour.setText(
"
four
"
);
butFour.setLayoutData(gd);
shell.pack();
shell.open();
while
(
!
shell.isDisposed())
{
if
(
!
display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
}
分享到:
相关推荐
SWT提供多种布局管理器,如FillLayout、GridLayout、RowLayout和 MigLayout,帮助在组件之间分配空间,使界面看起来整洁有序。 4. **事件和监听器** SWT事件模型允许开发者响应用户交互,如点击按钮、选择列表项...
这篇博客"SWT中嵌入Word控件应用"可能就是讲述如何在Java SWT界面中集成Word编辑功能,使得用户可以直接在应用程序内部创建、编辑和查看Word文档。 SWT是Eclipse开源项目的一部分,它为Java开发者提供了一套用于...
SWT提供了几种布局管理器,如FillLayout、GridLayout、FormLayout等,用于控制控件在窗口中的位置和大小。 `Swt常用控件中文教程 - E动中国.files`可能包含的是教程的辅助资源,如图片、样式表或者示例代码。这些...
在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...
在Java图形用户界面设计中,`GridLayout`类是一种常见的布局管理器,主要用于将容器内的组件按照矩形网格的形式进行排列。使用`GridLayout`后,容器会被划分成一系列大小相等的矩形区域,每个区域中仅能放置一个组件...
在Android开发中,有时我们需要在GridLayout布局中实现类似RadioButton单选功能,这在设计复杂的用户界面时非常有用。本文将详细讲解如何在Android 4.0版本中利用GridLayout模仿RadioButton的单选效果。 首先,了解...
1. **Widget**: SWT中的基本构建块是Widget,它代表GUI中的一个元素,如按钮、标签或文本框。每个Widget都有自己的事件处理机制,可以通过监听器来响应用户的交互。 2. **Display**: Display是所有SWT组件的顶级...
1. **BUTTON**: BUTTON是SWT中用于创建按钮的类。按钮是GUI中最基本的交互元素,用户可以通过点击按钮来触发某个操作或事件。在SWT中,你可以自定义按钮的文字、图标以及响应的事件处理器。 2. **TEXT**: TEXT组件...
在SWT中,自定义控件通常继承自`org.eclipse.swt.widgets.Control`类或其子类,如`Composite`。`Control`类是所有SWT可视对象的基类,而`Composite`则可以作为一个容器,包含其他控件。 ### 3. 绘制控件 自定义控件...
`GridLayout`是SWT中的一种布局管理器,它将容器划分为网格,并允许控件按照网格进行对齐和定位。`GridLayout`可以用来创建整齐的多列或多行布局,对于创建复杂的用户界面非常有用。 而`PGroup`可能指的是一个特定...
布局管理器如GridLayout、RowLayout和FillLayout,负责控制组件在窗口中的排列方式。事件处理机制允许开发者响应用户的交互,如点击按钮、选择列表项等。 Eclipse 4.4中的SWT API还包含了对绘图的支持,如Graphics...
在开发SWT应用时,了解SWT的基本组件和布局管理器是很重要的,例如Button、Label、Text、Composite等控件,以及FillLayout、GridLayout、FormLayout等布局。此外,SWT还提供了事件处理机制,允许开发者响应用户的...
在Java编程语言中,`GridLayout`是一个非常基础且实用的布局管理器,它用于组织组件(JComponents)在一个网格中,每个组件占据相同大小的空间。`GridLayout`将容器分为一个行和列的网格,并将组件均匀地分布在这些...
Display是SWT中用于管理窗口系统的对象,而Shell则代表应用程序的主要窗口。以下是一个简单的SWT "Hello world"程序示例: ```java import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell...
在Java平台上,SWT(Standard Widget Toolkit)是一种用于构建图形用户界面(GUI)的库,它是Eclipse IDE中的核心组成部分。SWT提供了一系列的基础控件和布局管理器,使得开发者能够创建功能丰富的桌面应用程序。在...
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....
2. **布局管理**:SWT支持多种布局管理器,如FillLayout、GridLayout、 MigLayout等,它们决定了控件在容器中的排列方式。学习如何使用布局管理器调整窗口和控件的大小和位置,以实现理想的界面布局。 3. **事件...
在SWT中,开发者可以使用各种组件来构建GUI,如Button、Text、Label、Shell、Composite、Tree、Table等。这些组件提供了丰富的事件处理机制,允许开发者响应用户的操作。例如,Button组件可以处理点击事件,Text组件...