首页 > 系统服务 > 详细

Eclipse 插件开发 SWT之Layout

时间:2015-12-03 20:44:35      阅读:307      评论:0      收藏:0      [点我收藏+]

Layout是用来对复合部件里的widget进行布局

有四种类型:

        FillLayout   RowLayout   GridLayout   FormLayout
1. FillLayout
    充满式布局,会铺满整个父复合控件,它会以同样大小对父组件中的子组件进行布局,这些子组件将以一行或一列的形式排列。
    水平排列:  FillLayout  fillLayout = new FillLayout(SWT.HORIZONTAL);     composite.setLayout ( fillLayout );
     技术分享
     如图所示,控件铺满整个父复合控件,每个控件在垂直方向上拉伸铺满,在水平方向上每个控件占据同样的大小来铺满,在同一行上进行排列。
     垂直排列:FillLayout  fillLayout = new FillLayout(SWT.VERTICAL);     composite.setLayout ( fillLayout );
      技术分享
      如图所示,控件铺满整个父复合控件,每个控件在水平方向上拉伸铺满,在垂直方向上每个控件占据同样的大小来铺满,在同一列上进行排列。
2. RowLayout
      RowLayout布局不会默认铺满整个父复合控件,也是按行或按列排列控件,但RowLayout布局会自动换行。
      如定义了5个button:
           技术分享
      调整窗口大小会自动换行:
            技术分享
     在布局时可以设置控件与父复合控件四周的像素距离,分别为rowLayout.marginLeft,rowLayout.marginTop,rowLayout.marginRight,rowLayout.marginBottom。
3. GridLayout
      网格布局,也是比较常用的布局方式,把父组件分成一个表格.默认情况下每个子组件按行优先占据一个单元格的空间,每个子组件按添加到父组件的顺序排列在表格中
      无参的构造方法:GridLayout gridLayout = new GridLayout();  若不再设置列数和是否每列宽度相同,则默认为1列,每列的宽度相同,也可设置gridLayout.numColumns和gridLayout.makeColumnsEqualWidth
      带参的构造方法:GridLayout gridLayout = new GridLayout(numColumns, true);  第一个参数是设置列数,第二个参数是设置是否每列的宽度相同
      如:Gridlayout  gridlayout  =   new   Gridlayout(2, true);
       技术分享   在布局时也可以设置与父复合控件四周的像素距离
       在GridLayout布局中提供了GridData类,用于设置每个子组件的外观及大小。
       在GridData类中有heightHint()和 widthHint()分别是设置高度和宽度,horizontalSpan()是设置跨的列数,设置完gridData后,把有相应设置的控件**.setLayoutData( gridData)
       技术分享
      在上图中,button1和button4是设置了同一个gridDate,button2和button3设置了同一个gridDate
4. FormLayout
       这个布局是相对定位,是以父复合控件的边缘或其他控件为基准的布局。
        和GridLayout布局相似的是有一个FormDate类可以设置子组件的属性
        FormLayout formLayout = new FormLayout();                  //定义布局方式
        FormData formData = new FormData();
        formData.left = new FormAttachment(0, 0);                  //FormAttachment第一个参数为int型时表示左边边缘在父复合控件宽度的百分比,第二个参数为在刚才百分比的基础上加上的像素值
        formData.top = new FormAttachment(0, 0);                   //第一个参数为上边边缘在父复合控件高度的百分比,第二个参数为刚才百分比的基础上加上的像素值
        Button button1 = new Button(shell, SWT.PUSH);
        button1.setText("button1");
        button1.setLayoutData(formData);

        FormData formData2 = new FormData();
        formData2.left = new FormAttachment(button1, 0);           // FormAttachment第一个参数为control型时是左边的控件,第二个参数为该控件与左边控件的距离
        formData2.top = new FormAttachment(0, 0);
        formData2.right = new FormAttachment(100, -10);           //FormAttachment第一个参数为int型时表示右边边缘在父复合控件宽度的百分比,第二个参数在刚才百分比的基础上加上的像素值
        Button button2 = new Button(shell, SWT.PUSH);
        button2.setText("button2");
        button2.setLayoutData(formData2);
        shell.setLayout(formLayout);
        在FormAttachment类的构造方法里第二个参数,为相对的控件或父复合控件的位置上加上的像素值,若为负值,就是减去想应的像素值
      技术分享

Eclipse 插件开发 SWT之Layout

原文:http://www.cnblogs.com/flying123/p/5017203.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!