zoukankan      html  css  js  c++  java
  • 关于SWT中的GridLayout布局方式

    GridLayout 布局的功能非常强大,也是笔者常用的一种布局方式。GridLayout是网格式布局,它把父组件分成一个表格,默认情况下每个子组件占据一个单元格的空间,每个子组件按添加到父组件的顺序排列在表格中。

    GridLayout布局 

    GridLayout 布局的功能非常强大,也是笔者常用的一种布局方式。GridLayout是网格式布局,它把父组件分成一个表格,默认情况下每个子组件占据一个单元格的空间,每个子组件按添加到父组件的顺序排列在表格中。GridLayout提供了很多的属性,可以灵活设置网格的信息。另外,GridLayout 布局提供了GridData类,子组件可以设置相应的GridData,例如 “dogPhoto.setLayoutData(gridData)”,GridData可以设置每个组件当做单元格的信息。 

    GridLayout的风格 

    GridLayout类提供了GridLayout 布局中划分网格的信息,主要通过以下几个参数进行设置。 

    NumColumns:通过“gridLayout.numColumns”属性可以设置父组件中分几列显示子组件。 

    MakeColumnsEqualWidth:通过“gridLayout. makeColumnsEqualWidth”属性可以设置父组件中子组件是否有相同的列宽当MakeColumnsEqualWidth为true时表示每列的列宽相等。 
    MarginLeft:表示当前组件距离父组件左边距的像素点个数。 
    MarginRight:表示当前组件距离父组件右边距的像素点个数。 
    MarginTop:表示当前组件距离父组件上边距的像素点个数。 
    MarginBottom:表示当前组件距离父组件下边距的像素点个数。 
    HorizontalSpacing:表示子组件的水平间距。 
    VerticalSpacing:表示子组件的垂直间距。 

    GridData的相关属性 

    GridLayout布局的灵活之处在于它利用网格布局数据GridData。通过GridData可以设置子组件在网格中的填充方式、大小边距等信息,用户可以通过子组件的setLayoutData方法设置网格布局数据。 

    GridData可以控制子组件在网格中的位置大小等相关显示信息。GridData可以设置如下的一些属性。 

    HorizontalAlignment:表示水平对齐方式。 

    VerticalAlignment:表示子组件的垂直对齐方式,值和水平方式一样。 
    HorizontalIndent:表示子组件水平偏移多少像素。此属性和“horizontalAlignment = GridData.BEGINNING”属性一起使用。 

    HorizontalSpan:表示组件水平占据几个网格。 

    GrabExcessHorizontalSpace:表示当父组件大小改变时,子组件是否以水平方向抢占空间。 
    GrabExcessVerticalSpace:表示当父组件大小改变时,子组件是否以垂直方向抢占空间。 
    WidthHint:表示子组件的宽度为多少像素(前提是未设置其他相关属性)。 
    HeightHint:表示子组件的高度为多少像素(前提是未设置其他相关属性)。 

    另外,GridData可以通过构造函数指定相应的属性值,有兴趣的读者可以参考GridData类的构造函数。 .

    14.11.1 GridLayout的风格

    GridLayout类提供了GridLayout 布局中划分网格的信息,主要通过以下几个参数进行设置。

    NumColumns:通过“gridLayout.numColumns”属性可以设置父组件中分几列显示子组件,如表14-4所示。

    表14-4  NumColumns效果

    列    数

    显 示 效 果

    numColumns = 1

     

    numColumns = 2

     

    numColumns = 3

     

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    GridLayout1.java

     1 import org.eclipse.swt.SWT;
     2 import org.eclipse.swt.layout.GridLayout;
     3 import org.eclipse.swt.widgets.Button;
     4 import org.eclipse.swt.widgets.Display;
     5 import org.eclipse.swt.widgets.Shell;
     6 
     7 public class GridLayout1 {
     8     public static void main(String[] args) {
     9         final Display display = Display.getDefault();
    10         final Shell shell = new Shell();
    11         shell.setSize(327, 253);
    12         // ---------创建窗口中的其他界面组件-------------
    13         // 把空间分3列。建立5个按钮,由左向右排,排满3个后换行继续
    14         shell.setLayout(new GridLayout(3, false));
    15         new Button(shell, SWT.NONE).setText("b1");
    16         new Button(shell, SWT.NONE).setText("button2");
    17         new Button(shell, SWT.NONE).setText("b3");
    18         new Button(shell, SWT.NONE).setText("button4");
    19         new Button(shell, SWT.NONE).setText("button5");
    20         // -----------------END------------------------
    21         shell.layout();
    22         shell.open();
    23         while (!shell.isDisposed()) {
    24             if (!display.readAndDispatch())
    25                 display.sleep();
    26         }
    27         display.dispose();
    28     }
    29 }

    GridLayout1.java

     1 public class GridData1 {
     2     public static void main(String[] args) {
     3         final Display display = Display.getDefault();
     4         final Shell shell = new Shell();
     5         shell.setSize(327, 253);
     6         // ---------创建窗口中的其他界面组件-------------
     7         shell.setLayout(new GridLayout(2, false));
     8         new Button(shell, SWT.NONE).setText("b1");
     9         new Button(shell, SWT.NONE).setText("button2");
    10 
    11         // 定义一个GridData对象,让b3按钮抢占两列的空间
    12         Button b3 = new Button(shell, SWT.NONE);
    13         GridData gridData = new GridData();
    14         // GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
    15         gridData.horizontalSpan = 2;
    16         b3.setLayoutData(gridData);
    17         b3.setText("b3");
    18 
    19         new Button(shell, SWT.NONE).setText("button4");
    20         new Button(shell, SWT.NONE).setText("button5");
    21 
    22 //        Button button6 = new Button(shell, SWT.NONE);
    23 //        GridData gridData2 = new GridData(GridData.FILL_HORIZONTAL);
    24 //        button6.setLayoutData(gridData2);
    25 //        button6.setText("button6");
    26 
    27         // -----------------END------------------------
    28         shell.layout();
    29         shell.open();
    30         while (!shell.isDisposed()) {
    31             if (!display.readAndDispatch())
    32                 display.sleep();
    33         }
    34         display.dispose();
    35     }
    36 }

    GridData2.java

     1 public class GridData2 {
     2     public static void main(String[] args) {
     3         final Display display = Display.getDefault();
     4         final Shell shell = new Shell();
     5         shell.setSize(327, 253);
     6         // ---------创建窗口中的其他界面组件-------------
     7         shell.setLayout(new GridLayout());
     8         Button b1 = new Button(shell, SWT.NONE);
     9         GridData gridData = new GridData();
    10         gridData.horizontalAlignment = GridData.BEGINNING;
    11         b1.setLayoutData(gridData);
    12         b1.setText("b1");
    13         new Button(shell, SWT.NONE).setText("button2");
    14         // -----------------END------------------------
    15         shell.layout();
    16         shell.open();
    17         while (!shell.isDisposed()) {
    18             if (!display.readAndDispatch())
    19                 display.sleep();
    20         }
    21         display.dispose();
    22     }
    23 }

    GridData3.java

     1 public class GridData3 {
     2     public static void main(String[] args) {
     3         final Display display = Display.getDefault();
     4         final Shell shell = new Shell();
     5         shell.setSize(327, 253);
     6         // ---------创建窗口中的其他界面组件-------------
     7         shell.setLayout(new GridLayout());
     8         Button b1 = new Button(shell, SWT.NONE);
     9         GridData gridData = new GridData();
    10         gridData.grabExcessHorizontalSpace = true;
    11         gridData.horizontalAlignment = GridData.FILL;
    12         // 以上三句和GridData gridData = new GridData(GridData.FILL_HORIZONTAL);等效
    13         b1.setLayoutData(gridData);
    14         b1.setText("b1");
    15         new Button(shell, SWT.NONE).setText("button2");
    16         // -----------------END------------------------
    17         shell.layout();
    18         shell.open();
    19         while (!shell.isDisposed()) {
    20             if (!display.readAndDispatch())
    21                 display.sleep();
    22         }
    23         display.dispose();
    24     }
    25 }

     

  • 相关阅读:
    centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
    基于HTML5 WebGL实现 json工控风机叶轮旋转
    基于HTML5的WebGL实现的2D3D迷宫小游戏
    基于HTML5和WebGL的碰撞测试
    基于HTML5和WebGL的3D网络拓扑结构图
    基于 HTML5 WebGL 的 3D 网络拓扑图
    基于HTML5 Canvas 实现弹出框
    基于HTML5 Canvas实现用户交互
    基于HTML5快速搭建TP-LINK电信拓扑设备面板
    HTML5 技术在风电、光伏等新能源领域的应用
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/4256524.html
Copyright © 2011-2022 走看看