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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pycharm如何修改背景颜色_如何设置幻灯片背景颜色为自定义

    pycharm如何修改背景颜色_如何设置幻灯片背景颜色为自定义Pycharm可以通过设置主题来设定背景颜色,但主题的背景颜色也仅仅局限特定的几种,通过如下的方式可以自定义背景颜色。File——Settings——Editor——General——(右侧上方的框框)Text——Defaulttext——选右侧的Background就可以设置背景色了。图中的灰色背景RGB是192,192,192。 …

  • FFmpeg 4.x 从入门到精通(一)—— QT 中如何用 FFmpeg 实现软件解码

    FFmpeg 4.x 从入门到精通(一)—— QT 中如何用 FFmpeg 实现软件解码背景因为在2021年给自己定了目标和计划,学习ffmpeg,所以这篇文章是实现计划的第一步。ffmpeg众所周知,就不展开介绍了,下面给出FFmpeg4.2windowsx64lib库和头文件的下载地址(粉丝免积分下载):https://download.csdn.net/download/u012534831/14045436本文也是属于博主的入门学习总结与分享,因此我们先从ffmpeg的软解码开始,从解码到绘制,一起体验下亲自动手的快乐。本文的语言环境基于C++,界面部分是QT。

  • pycharm设置c语言注释颜色,pycharm设置注释颜色的方法[通俗易懂]

    pycharm设置c语言注释颜色,pycharm设置注释颜色的方法[通俗易懂]pycharm设置注释颜色的方法操作方法如下所示:File–>Settings–>Editor–>Color&Fonts–>LanguageDefaults–>Linecomment–>设置颜色即可以上这篇pycharm设置注释颜色的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。时间:2018-05-22…

  • 本地mysql文件浏览器_可视化数据库浏览器(SQLite Database Browser)

    本地mysql文件浏览器_可视化数据库浏览器(SQLite Database Browser)SQLiteDatabaseBrowser可以管理所有iphone数据,基于Qt库开发,主要是为非技术用户创建、修改和编辑SQLite数据库的工具,使用向导方式实现。用来处理SQLite3数据库文件的应用程序,它能够打开sqlite3数据库文件(常见的文件扩展名为.db,.db3,.s3db;只要文件是SQLite3数据库文件,其扩展名不规范也不要紧)。SQLiteDatabas…

  • Docker镜像相关命令

    Docker镜像相关命令1、查看docker版本 docker version 2、列出本地主机上的镜像: docker images REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小3、查询镜像 docker search 镜像名称…

  • C++ 读写TXT文件

    C++ 读写TXT文件 一、文件的输入输出二、从txt文件中读取二维数组(int以及string)三、从txt文件读取的数据存到struct中 参考博客:https://blog.csdn.net/u013749068/article/details/78761553     http://www.cnblogs.com/helinsen/archive/2012/07/26/2609…

发表回复

您的电子邮箱地址不会被公开。

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