java swt gridlayout_SWT GridLayout使用总结

java swt gridlayout_SWT GridLayout使用总结GridLayoutFactory里面所有方法都是链式调用,设置完GridLayout的参数后,调用applayTo::Composite,为一个Composite设置layout。Compositecomp1=toolkit.createComposite(shell);//GridLayoutgridLayout=newGridLayout(1,false);//gridLay…

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

GridLayoutFactory

里面所有方法都是链式调用,设置完GridLayout的参数后,调用applayTo::Composite,为一个Composite设置layout。Composite comp1 = toolkit.createComposite(shell);

//GridLayout gridLayout = new GridLayout(1, false);

//gridLayout.horizontalSpacing = 0;

//gridLayout.verticalSpacing = 0;

//gridLayout.marginWidth = 0;

//gridLayout.marginHeight = 0;

//comp1.setLayout(gridLayout);

GridLayoutFactory.fillDefaults().applyTo(comp1);

swtDefaults和fillDefaults区别

swtDefaults()等价于调用new GridLayout(…),上下左右留有5像素的margin,元素之间也有5像素距离。shell.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLUE));

GridLayoutFactory.swtDefaults().numColumns(2).applyTo(shell);

Label label_1 = toolkit.createLabel(shell, “Label 1”, SWT.CENTER);

GridDataFactory.fillDefaults().grab(false, true).hint(300, SWT.DEFAULT).applyTo(label_1);

Label label_2 = toolkit.createLabel(shell, “Label 2”, SWT.CENTER);

GridDataFactory.fillDefaults().grab(true, true).applyTo(label_2);

9b0f4a406537a4b69dfec050a73ab4b9.png

去掉周围margin和cell间距GridLayoutFactory.fillDefaults().spacing(0, 0).numColumns(2).applyTo(shell);

c174ff80f6b18176f836ebf523db2543.png

GridDataFactory

里面的方法也是链式调用的,设置完GridData参数后,调用applyTo::Control,给一个Control设置GridData。//GridData gridData = new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1);

//gridData.minimumWidth = 100;

//gridData.minimumHeight = 100;

//gridData.heightHint = 400;

//gridData.widthHint = 500;

//composite1.setLayoutData(gridData);

GridDataFactory.swtDefaults().minSize(10, 10).hint(400, 500).applyTo(composite1);

固定控件大小

grab为false,hint给个数值。Label label_1 = toolkit.createLabel(comp1, “Label 1”, SWT.CENTER);

GridDataFactory.fillDefaults().grab(false, false).hint(50, 50).applyTo(label_1);

3aed853d01a39bbcc9f807e5689fb421.png

只固定宽度或高度

不固定的,grab设置成true,hint为SWT.DEFAULT。GridDataFactory.fillDefaults().grab(false, true).hint(50, SWT.DEFAULT).applyTo(label_1);

ece763ec4938ab28ffd87de1d9f9bb73.png

宽度和高度伸缩概念

下面的例子,我们都以宽度为例说明(高度是一样的),修改label 2的宽度。fillDefaults()的align是SWT.FILL,swtDefaults()的align是SWT.CENTER。

宽度无限伸缩

fillDefaults — grab为true便可,只要条件允许,宽度可为0,也可以无线大。GridDataFactory.fillDefaults().grab(true, true).applyTo(label_2);

423efedcdf8f84130b17e31104818468.png

有最小宽度的无线伸缩

fillDefaults — 设置minSize,下面label 2的最小宽度是200,外面容器多宽它就多宽。GridDataFactory.fillDefaults().grab(true, true).minSize(200, SWT.DEFAULT).applyTo(label_2);

994aa6f254a98382505ab2962e78859b.png

一定宽度内进行伸缩

swtDefaults — 设置hint,下面label 2的最大宽度是300,最小宽度可以为0。GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.FILL)

.grab(true, true).hint(300, SWT.DEFAULT).applyTo(label_2);

0b26e08daca7dff824423a375605a685.png

宽度在最小值和最大值之间伸缩

swtDefaults — 同时设置minSize和hint,下面label 2的最小宽度是100,最大宽度是300。GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.FILL)

.grab(true, true).minSize(100, SWT.DEFAULT).hint(300, SWT.DEFAULT).applyTo(label_2);

b35158ef27c22c82ef358709f728cb5e.png

总结

使用GridLayoutFactory和GridDataFactory可以是代码更加简洁,JFace本身的控件,大量都是使用它们。

父控件GridLayoutFactory.fillDefaults().applyTo(parent),子控件GridDataFactory.fillDefaults().applyTo(child),效果相当于FIllLayout。

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

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

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

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

(0)


相关推荐

  • Java实现文件写入——IO流(输入输出流详解)[通俗易懂]

    Java实现文件写入——IO流(输入输出流详解)[通俗易懂]输入输出的重要性:     输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据。流是一组有序的数据序列,根据操作的类型,分为输入流和输出流。     程序从输入流读取数据,向输出流写入数据。Java是面向对象的程序语言,每一个数据流都是一个对象,它们提供了各种支持“…

  • LoadRunner11完美激活成功教程「建议收藏」

    LoadRunner11完美激活成功教程「建议收藏」今天装完LoadRunner后,发现怎么都启动不了,最后找了很久的注册码global-100:AEAMAUIK-YAFEKEKJJKEEA-BCJGIweb-10000:AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB很管用了!

  • EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略

    EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。其中,点播功能主要包含:上传、转码、分发。直播功能,主要包含:直播、录像,直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管…

  • 软件测试全套教程,软件测试自学线路图

    软件测试全套教程,软件测试自学线路图软件测试:软件测试是为了发现程序中的错误而执行程序的过程。通俗的说,软件测试需要在发布软件之前,尽可能的找软件的错误,尽量避免在发布之后给用户带来不好的体验,并要满足用户使用的需求。现在市面上这么多软件,每个软件背后都有软件测试工程师的功劳,这也造就了软件测试行业前景非常好,今天我就分享一下自学线路图,及全套教程!软件测试学习线路图点击查看大图第一阶段:该…

  • nrm使用报错_重大错报

    nrm使用报错_重大错报nrm使用错误:ERR_INVALID_ARG_TYPE

    2022年10月28日
  • 2016年1月15日面试某互联网公司总结(转)

    2016年1月15日面试某互联网公司总结(转)

发表回复

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

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