zoukankan      html  css  js  c++  java
  • GridLayout and 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类的构造函数。 

    import org.eclipse.swt.SWT;
    
    public class GridLayoutDemo {
    
        public static void main(String[] args) {
    
            Display display = new Display(new DeviceData());
    
            System.out.println(display.getBounds().width);
    
            Shell shell = new Shell(display);
    
            shell.setSize(500, 400);
    
            GridLayout gridLayout = new GridLayout(); // 定义一个GridLayout对象
    
            gridLayout.numColumns = 6; // 设定GridLayout对象的列数
    
            shell.setLayout(gridLayout); // 设定shell的排列方式
    
            GridData gridData; // 声明一个GridData对象
    
            Text text1 = new Text(shell, SWT.NONE);
    
            text1.setText("1");
    
            gridData = new GridData(GridData.VERTICAL_ALIGN_FILL);
            /**
             * 定义一个
             * 
             * /*gridData的类型,其中VERTICAL_ALIGN_FILL代表垂直方向按单
             * 
             * /*元格拉伸对齐。下面的HORIZONTAL_ALIGN_FILL代表在水平方向上
             * 
             * /*按单元格拉伸对其,而FILL_BOTH代表双向拉伸充满。当然还有水/*平方向上的FILL_HORIZONTAL等。
             **/
    
            gridData.verticalSpan = 2;// 设置垂直方向所占用的单元格数
    
            text1.setLayoutData(gridData); // 设置Text对象的GridData
    
            Text text2 = new Text(shell, SWT.NONE);
    
            text2.setText("2");
    
            gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    
            gridData.horizontalSpan = 5;
    
            text2.setLayoutData(gridData);
    
            Text text3 = new Text(shell, SWT.NONE);
    
            text3.setText("3");
    
            gridData = new GridData(GridData.FILL_BOTH);
    
            gridData.horizontalSpan = 4; // 设置水平方向上所占用的单元格数
    
            text3.setLayoutData(gridData);
    
            Text text4 = new Text(shell, SWT.NONE);
    
            text4.setText("4");
    
            gridData = new GridData(GridData.VERTICAL_ALIGN_FILL);
    
            gridData.verticalSpan = 2;
    
            text4.setLayoutData(gridData);
    
            Text text5 = new Text(shell, SWT.NONE);
    
            text5.setText("5");
    
            gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    
            gridData.horizontalSpan = 5;
    
            text5.setLayoutData(gridData);
    
            shell.open();
    
            while (!shell.isDisposed()) {
    
                if (!display.readAndDispatch())
    
                    display.sleep();
    
            }
    
            display.dispose();
    
        }
    
    }

    注意:如果将gridLayout这个布局设置给Composite组件的时候,需要调用composite的layout方法,否则布局无法显示。

  • 相关阅读:
    mysql innodb存储引擎和myisam引擎
    php 5.5 xhprof for windows
    sqlserver 2012 部署详解
    Oracle ASM 常用命令
    oracle 基础知识(十四)----索引扫描
    oracle 基础知识(十三)----执行计划
    Oracle DG --检查
    Oracle broker--详解
    初识正则表达式
    python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)
  • 原文地址:https://www.cnblogs.com/sandyflower/p/3628165.html
Copyright © 2011-2022 走看看