`
hupy
  • 浏览: 188874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SWT中的GridLayout【转载】

    博客分类:
  • SWT
阅读更多

GridLayout 是一个非常强大的布局管理器,它可以实现很多复杂的布局,名字中暗示它将所有控件放置在类似网格的布局中.^__^GridLayout 有两个构造函数.

GridLayout的构造函数

构造函数 描述
public GridLayout() 建立一个默认的GridLayout 布局.
public GridLayout(int numColumns, boolean makeColumnsEqualWidth) 建立一个GridLayout 布局,拥有numColumns 列,如果makeColumnsEqualWidthtrue, 则全部组件将拥有相同的宽度.

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 设置horizontalAlignmentverticalAlignmentFILL, 设置grabExcessHorizontalSpacegrabExcessVerticalSpacetrue.
FILL_HORIZONTAL 设置horizontalAlignmentFILL, 和设置grabExcessHorizontalSpacetrue.
FILL_VERTICAL 设置verticalAlignmentFILL, 和设置grabExcessVerticalSpacetrue.
GRAB_HORIZONTAL 设置grabExcessHorizontalSpacetrue.
GRAB_VERTICAL 设置grabExcessVerticalSpacetrue.
HORIZONTAL_ALIGN_BEGINNING 设置horizontalAlignmentBEGINNING.
HORIZONTAL_ALIGN_CENTER 设置horizontalAlignmentCENTER.
HORIZONTAL_ALIGN_END 设置horizontalAlignmentEND.
HORIZONTAL_ALIGN_FILL 设置horizontalAlignmentFILL.
VERTICAL_ALIGN_BEGINNING 设置verticalAlignmentBEGINNING.
VERTICAL_ALIGN_CENTER 设置verticalAlignmentCENTER.
VERTICAL_ALIGN_END 设置verticalAlignmentEND.
VERTICAL_ALIGN_FILL 设置verticalAlignmentFILL.

下面我们来看几个例子:
代码片段:
	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");

运行效果:
o_GridLayout-1.jpg

图中可以看到各个Button 的宽度是依靠字体长度来自动设定的,假如你想设置所有的Button 都使用相同的大小该怎么办?使用makeColumnsEqualWidth = true; 吗?不,这样做不行,它回会将各网格的大小设为相同,我们该使用GridData 中相关属性来设置Button. 下面程序中使用了GridData.FILL_BOTH 属性,它将填充所在网格水平或垂直空间,并将多余空间占有,这样不论窗口调整多大,四个Button 都会有相同空间.
当然GridLayout能做的不只是这些,要更复杂的效果,可能多个Composite 配合使用,具体请参见原书第二部分第四章:Apress.The.Definitive.Guide.to.SWT.and.JFace.eBook-LiB.chm
运行效果
初始化:
o_GridLayout-2.jpg
调整大小后:
o_GridLayout-3.jpg
完整代码:

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中文教程.rar

    SWT提供多种布局管理器,如FillLayout、GridLayout、RowLayout和 MigLayout,帮助在组件之间分配空间,使界面看起来整洁有序。 4. **事件和监听器** SWT事件模型允许开发者响应用户交互,如点击按钮、选择列表项...

    SWT 中嵌入Word 控件应用

    这篇博客"SWT中嵌入Word控件应用"可能就是讲述如何在Java SWT界面中集成Word编辑功能,使得用户可以直接在应用程序内部创建、编辑和查看Word文档。 SWT是Eclipse开源项目的一部分,它为Java开发者提供了一套用于...

    SWT插件中文教程SWT常用方法

    SWT提供了几种布局管理器,如FillLayout、GridLayout、FormLayout等,用于控制控件在窗口中的位置和大小。 `Swt常用控件中文教程 - E动中国.files`可能包含的是教程的辅助资源,如图片、样式表或者示例代码。这些...

    swt教程 有关SWT怎么应用

    在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...

    GridLayout

    在Java图形用户界面设计中,`GridLayout`类是一种常见的布局管理器,主要用于将容器内的组件按照矩形网格的形式进行排列。使用`GridLayout`后,容器会被划分成一系列大小相等的矩形区域,每个区域中仅能放置一个组件...

    Android 4.0 在GridLayout中模仿RadioButton单选按钮

    在Android开发中,有时我们需要在GridLayout布局中实现类似RadioButton单选功能,这在设计复杂的用户界面时非常有用。本文将详细讲解如何在Android 4.0版本中利用GridLayout模仿RadioButton的单选效果。 首先,了解...

    swt工具文档 swt工具文档

    1. **Widget**: SWT中的基本构建块是Widget,它代表GUI中的一个元素,如按钮、标签或文本框。每个Widget都有自己的事件处理机制,可以通过监听器来响应用户的交互。 2. **Display**: Display是所有SWT组件的顶级...

    SWT的简单实例

    1. **BUTTON**: BUTTON是SWT中用于创建按钮的类。按钮是GUI中最基本的交互元素,用户可以通过点击按钮来触发某个操作或事件。在SWT中,你可以自定义按钮的文字、图标以及响应的事件处理器。 2. **TEXT**: TEXT组件...

    java swt自定义控件

    在SWT中,自定义控件通常继承自`org.eclipse.swt.widgets.Control`类或其子类,如`Composite`。`Control`类是所有SWT可视对象的基类,而`Composite`则可以作为一个容器,包含其他控件。 ### 3. 绘制控件 自定义控件...

    swt-grouplayout-pgroup

    `GridLayout`是SWT中的一种布局管理器,它将容器划分为网格,并允许控件按照网格进行对齐和定位。`GridLayout`可以用来创建整齐的多列或多行布局,对于创建复杂的用户界面非常有用。 而`PGroup`可能指的是一个特定...

    Eclipse SWT 4.4 API 文档

    布局管理器如GridLayout、RowLayout和FillLayout,负责控制组件在窗口中的排列方式。事件处理机制允许开发者响应用户的交互,如点击按钮、选择列表项等。 Eclipse 4.4中的SWT API还包含了对绘图的支持,如Graphics...

    32位swt的jar包

    在开发SWT应用时,了解SWT的基本组件和布局管理器是很重要的,例如Button、Label、Text、Composite等控件,以及FillLayout、GridLayout、FormLayout等布局。此外,SWT还提供了事件处理机制,允许开发者响应用户的...

    java 应用GridLayout设计版面

    在Java编程语言中,`GridLayout`是一个非常基础且实用的布局管理器,它用于组织组件(JComponents)在一个网格中,每个组件占据相同大小的空间。`GridLayout`将容器分为一个行和列的网格,并将组件均匀地分布在这些...

    swt-jface入门

    Display是SWT中用于管理窗口系统的对象,而Shell则代表应用程序的主要窗口。以下是一个简单的SWT "Hello world"程序示例: ```java import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell...

    SWT开发布局(讲解Eclipse的开发插件)

    在Java平台上,SWT(Standard Widget Toolkit)是一种用于构建图形用户界面(GUI)的库,它是Eclipse IDE中的核心组成部分。SWT提供了一系列的基础控件和布局管理器,使得开发者能够创建功能丰富的桌面应用程序。在...

    org.eclipse.swt.win32

    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高级密笈源码swt

    2. **布局管理**:SWT支持多种布局管理器,如FillLayout、GridLayout、 MigLayout等,它们决定了控件在容器中的排列方式。学习如何使用布局管理器调整窗口和控件的大小和位置,以实现理想的界面布局。 3. **事件...

    SWT开发教程1

    在SWT中,开发者可以使用各种组件来构建GUI,如Button、Text、Label、Shell、Composite、Tree、Table等。这些组件提供了丰富的事件处理机制,允许开发者响应用户的操作。例如,Button组件可以处理点击事件,Text组件...

Global site tag (gtag.js) - Google Analytics