setLayout()和GridData的设置[通俗易懂]

setLayout()和GridData的设置[通俗易懂]总结:(1)setLayout()是设置界面布局,如界面有几行几列如jf.setLayout(newGridLayout(2,1));//容器共有2行1列。GridLayoutlayout=newGridLayout();layout.numColumns=4;//设置容器的列数layout.makeColumnsEqualWidth=false;//设…

大家好,又见面了,我是你们的朋友全栈君。

总结:

(1)setLayout()是设置界面布局,如界面有几行几列 如jf.setLayout(new GridLayout(2,1));//容器共有2行1列。

GridLayout layout = new GridLayout(); 
layout.numColumns = 4; // 设置容器的列数 
layout.makeColumnsEqualWidth = false;// 设置容器上的组件是否等距分开 
//等价写法:
GridLayout layout = new GridLayout(4, false);

(2)而setLayoutData的作用如下,设置某一个控件所占单元格的行数列数等。

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

分点概述
 

1. 设置布局GridLayout——容器几行几列

JFrame jf = new JFrame();
jf.setLayout(new GridLayout(2,1));//2行1列
setLayout()里头写你所要设的布局

2.设置布局数据RowData(设置按钮的宽为100像素,高为30像素) 

Button button=new Button(shell,SWT.NONE);
button.setText(“B1”);

//设置按钮的宽为100像素,高为30像素

button.setLayoutData(new RowData(100,30));

3.设置布局数据GridData

GridData gridData=new GridData();

//设置缩进为20 像素大小

gridData.horizontalIndent=20;

button.setLayoutData(gridData);

4.GridLayout设置:

GridLayout layout = new GridLayout();
// 设置容器的列数
layout.numColumns = 4;
// 设置容器上的组件是否等距分开
layout.makeColumnsEqualWidth = false;等价写法:GridLayout layout = new GridLayout(4, false);

5.GridData设置1。

GridData.grabExcessHorizontalSpace、GridData.grabExcessVerticalSpace

①GridData.grabExcessHorizontalSpace
GridData gridData = new GridData();
// 当容器大小变化时,组件所在列空间横向随容器的变化而变化
gridData.grabExcessHorizontalSpace = true;
等价写法:GridData gridData = new GridData(GridData.GRAB_HORIZONTAL);
②GridData.grabExcessVerticalSpace
GridData gridData = new GridData();
// 当容器大小变化时,组件所在行空间纵向随容器的变化而变化
gridData.grabExcessVerticalSpace = true;等价写法:GridData gridData = new GridData(GridData.GRAB_VERTICAL);

6.GridData设置2。

GridData.FILL_HORIZONTAL、GridData.FILL_VERTICAL、GridData.FILL_BOTH

① GridData.FILL_HORIZONTAL:
GridData gridData = new GridData();
// 横向对齐方式
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
等价写法:GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
②GridData.FILL_VERTICAL
GridData gridData = new GridData();
// 纵向对齐方式

7.转载:https://www.cnblogs.com/sandyflower/p/3628165.html

 

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方法,否则布局无法显示。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142835.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月10日 下午6:40
下一篇 2022年5月10日 下午7:00


相关推荐

  • fastadmin 自定义搜索

    fastadmin 自定义搜索PHP代码$offset=input(‘offset’);$limit=input(‘limit’);//获取搜索框的值$filter=input(‘filter’);if($filter){$filter=urldecode($filter);$filter=json_decode($filter,TRUE);foreach($filteras$k=>$v){$where[$k]=[‘like’,”%{$v}%”];}.

    2022年7月13日
    91
  • 制作CYDIA发布源的DEB文件,详解!

    制作CYDIA发布源的DEB文件,详解!原文地址 制作 CYDIA 发布源的 DEB 文件 详解 作者 NeoZ nbsp 首先需要一个可以编辑和压制的环境 Ubuntu Debian 是 deb 文件系统的原生系统 在兼容性和处理性能上最好 如果你没有 LinuxDebian 或 Ubuntu 系统的机器 不要紧 可以随时用 VMwareStatio 或 VirtualBox 虚拟机来安装一个 我用的 Ubuntu12 0 4 全新系

    2026年3月16日
    1
  • IDEA打jar包在服务器运行出现Error:Invalid or corrupt jarfile xxx.jar 报错+如何使用IDEA打jar包

    IDEA打jar包在服务器运行出现Error:Invalid or corrupt jarfile xxx.jar 报错+如何使用IDEA打jar包JAR包错误:Error:Invalidorcorruptjarfilexxx.jar错误背景:IDEA打包springboot项目为jar包。打包方法百度了好几种,结果都在运行时报了Error:Invalidorcorruptjarfilexxx.jar错误。…

    2022年8月22日
    11
  • Kali Linux 安装过程 超详细(图文并茂,通用版)

    Kali Linux 安装过程 超详细(图文并茂,通用版)从Kali2020.1版本新功能说起,在大致读过版本发布说明后,再进行安装,就不会有太大问题,不会频繁出错。然后给出了多种镜像下载途径,包括历史所有版本的镜像,供读者自行选择下载。最后开始正式安装,内容也是十分详细,图文并茂。在文章最后,介绍了默认安装的情况下,如果获取large版本,获取更多工具。最后介绍如何更新Kali,可升级至Kali2020.2版本。

    2022年6月4日
    74
  • spring的事务隔离级别「建议收藏」

    spring的事务隔离级别「建议收藏」spring的事务隔离级别

    2022年4月22日
    50
  • Android SDK目录及版本号区别

    Android SDK目录及版本号区别今天又有人问 Tools Build Tools Platform tools 有什么区别 是干嘛的 现在对 SDK 目录做一下总结阐述 SDK 目录 add ons 这里面保存着附加库 第三方公司为 android 平台开发的附加功能系统 比如 GoogleMaps 当然你如果安装了 OphoneSDK 这里也会有一些类库在里面 docs 这里面是 AndroidSDKAP 参考文档 所有的 API 都可以在这里查到

    2026年1月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号