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。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DHCP协议解析

    DHCP协议解析DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理一、

    2022年5月23日
    49
  • 数仓建设 | ODS、DWD、DWM等理论实战(好文收藏)

    数仓建设 | ODS、DWD、DWM等理论实战(好文收藏)本文目录:一、数据流向二、应用示例三、何为数仓DW四、为何要分层五、数据分层六、数据集市七、问题总结导读数仓在建设过程中,对数据的组织管理上,不仅要根据业务进行纵向的主题域划分,还需要横向的数仓分层规范。本文作者围绕企业数仓分层展开分析,希望对你有帮助。因文章太长,本文不是完结版,文末可获取完整PDF版从事数仓相关工作的人员都知道数仓模型设计的首要工作之一就是进行模型分层,可见模型分层在模型设计过程中的重要性,确实优秀的分层设计是一个数仓项目能否建设成功的核心要素,让数

    2022年6月26日
    74
  • java常量池在方法区还是堆_JAVA常量池

    java常量池在方法区还是堆_JAVA常量池要是没有实践过别人书本上的理论的话,就还是会说常量池在方法区里面,要是知道方法区已经随jdk升级,被逐步干掉的话,就会看到有的文章说移动到heap堆里面了,还有极少的说移动到Metaspace里面了,产生了分歧。这个时候就需要实践出真知了。/***测试常量池在分区的位置**@authorLiXuekaion2020/6/9*/publicclassStringConstantPoolTest{publicstaticvoidmain(String[]

    2022年7月28日
    46
  • mcu单片机开发_AVR单片机

    mcu单片机开发_AVR单片机关于单片机(MCU)最强科普

    2022年10月8日
    2
  • lock free(无锁并发)是什么

    lock free(无锁并发)是什么一、非阻塞同步(Non-blockingSynchronization)1.无锁编程/lock-free/非阻塞同步无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blockingSynchronization)。实现非阻塞同步的方案称为“无锁编程算法”(Non-blockingalgorithm)。lock-free是目前最常见的无锁编程的实现级别(一共三种级别):wait-free l.

    2022年7月19日
    31
  • 关于如何访问当前页面所在的iframe属性[通俗易懂]

    今天碰到个问题,在当前页面访问包含他的iframe标签中的属性。用如下方法:window.frameElement如果要id就在后边加上.id 用什么加什么。其实很简单。就是知识面太少。

    2022年4月17日
    56

发表回复

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

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