formlayout_精简SWT FormLayout的用法

formlayout

一直在追求效率,最近我重新考虑了SWT FormLayout的可用性。 尽管就灵活性而言,它是我最喜欢的核心布局之一,但我不得不认识到,大多数同仁都不愿意使用它。 考虑到面部React,建议将其建议用于适当的任务有时实际上会造成真正的身体疼痛……

确实,在仔细检查之后,人们不得不承认这种用法至少有点麻烦。 布局本身与其所覆盖的每个控件的FormData配置FormData 。 以下代码片段显示了一个简单的用例–好吧,我不会破坏自己发现它的作用的乐趣:

Label label = new Label( composite, SWT.NONE );
FormData labelData = new FormData();
label.setLayoutData( labelData );
labelData.top = new FormAttachment( 0 );
labelData.right = new FormAttachment( 100 );
labelData.bottom = new FormAttachment( 100 );
labelData.left = new FormAttachment( 0 );

当然,每个人都可以弄清楚代码的功能。 但是它确实具有真正解决问题的想法–我想这是问题的一部分。 那么,如何以下面的方式编写这种不太冗长但仍然更具表现力的代码:

Label label = new Label( composite, SWT.NONE );
attach( label ).atTop().atRight().atBottom().atLeft();

尽管它绝对更紧凑,但表达至少在某种程度上在旁观者的眼中,并且在很大程度上取决于人们对当前任务的隐喻。 在我的想象中, FormLayout基本上控件边界附加到某些参考点,即顶部atTop ,这意味着它始终将控件的顶部保持在父级客户区域的上限。

或者,它在顶部将一个控件附加到另一个控件,这意味着该控件的上侧始终与另一个控件的底部对齐。 此外,可以将一个边附加到与各自客户区绑定的百分比范围内,所有这些都可以这样表示:

attach( control ).atLeftTo( otherControl ).fromTop( 20 );

基于这种思想,我开发了一个名为FormDatas实用程序小类,以将概述的思想付诸实践。 该类提供了一个静态方法attach来创建FormData的新实例,该实例在作为参数指定的控件处注册。 返回的布局数据实例由FormDatas对象包装,以启用配置方法1的流畅接口样式。

另外,还有很多方法变体可以处理,例如边距对齐的概念。 边距基于基础的Attachment#offset属性,但实际上尊重附件的一面。 因此,5 atRight的边距对应于已使用分子100分配给FormData#right属性的Attachment的偏移量-5:

attach( label ).atRight( 5 );

的缩写

FormData formData = new FormData();
label.setLayoutData( formData );
formData.right = new FormAttachment( 100, -5 );

对齐由Attachment#alignment属性支持,并使用相应的SWT常量。 例如,要将控件的顶部附件调整到另一个控件的中心,请使用以下代码:

attach( control ).atTopTo( otherControl, MARGIN, SWT.CENTER );

这是另一种情况,显示了如何使用宽度提示而不是相对的侧面附件:

attach( control ).atTop().atRight().atBottom().withWidth( WIDTH );

值得一提的是, FormDatas实现并未涵盖FormDataFormAttachment所有可能性。 但是,由于我能够替换当前项目中的所有用例,因此希望能够满足更常见的用例。

从IDE的角度来看,集成FormDatas的最佳方法是将其配置为收藏 。 这样,可以通过自动处理静态导入等内容的内容辅助使用FormDatas.attach(Control)方法。

附加内容助手

如果您想自己看看FormDatas ,那么有一个包含实现的GitHub要点 。 但是请记住,我没有花任何时间在文档,参数验证等方面。 在这方面,该实用程序是一个很粗糙的版本,可能会随着时间的推移而发展。

https://gist.github.com/fappel/9867945

要点包含FormDatas和JUnit测试用例,因为该实现旨在在生产环境中使用,因此应进行测试。

  1. FormDatas#attach(Control)基本上是一种工厂方法。 因此,实际上返回FormDatas的实例可能看起来有些奇怪。 但是,仅仅为了流利的界面风格而引入一种新类型对我来说也有些奇怪–因此,如果您有更好的主意... ↩

翻译自: https://www.javacodegeeks.com/2014/04/slim-down-swt-formlayout-usage.html

formlayout

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网时代会给我们带来怎么样的改变?

物联网的出现给全球各行各业都带来了极大的改变,物联网作为未来科技发展的重要方向,一直受到全球各国的重视,我国物联网经济也一直在高速的发展,由中国经济信息社发布的2018-2019中国物联网发展年度报告》中显示,2018年…

工业以太网交换机的软件故障

工业以太网交换机的软件故障是指系统及其配置上的故障,当发现工业以太网交换机在通信中出现问题,怀疑是工业交换机出现问题后,那么我们该怎么进行排除呢?接下来我们就跟随飞畅科技的小编一起来看看吧! (1)系统错误&…

电源模块DC-DC隔离型测试方法

本篇介绍如何测试电源模块的重点技术指标和测试方法。电源模块选定后,接下来就是非常重要的环节,测试产品性能和参数。一个产品的品质好坏取决于各项技术参数指标的平衡。 一、电源模块的测试与方法 测试阶段一般分2个部分: 1、模拟实际电路工…

【渝粤教育】国家开放大学2019年春季 3896人文英语1 参考试题

试卷代号:3896 人文英语1 试题 2019年7月 注 意 事 项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏 内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带 出考场。监考人收完考卷和答题纸后才可离开考…

一分钟了解:zigbee的三种关键角色(视频讲解)

#物联网# 无线通信技术ZIGBEE网络三种关键角色。协调器,路由器,传感器总结起来,ZigBee网络的3个关键角色,即:协调器,路由节点和终端节点 协调器——具有建立新网络的能力,负责启动网络和维护网络…

【渝粤教育】国家开放大学2019年春季 691物理化学及实验 参考试题

科目编号&#xff1a;0691 座位号&#xff1a; 2018-2019学年度第二学期期末考试 物理化学及实验试题 2019年7月 一、填空题&#xff08;每空4分&#xff0c;共40分&#xff09; 1.我们把 和 的流体称为理想流体。 2. 当雷诺数Re <1000时&#xff0c;液体做 &#xff0c;…

JUnit 5中的测试执行顺序

一般实践认为&#xff0c;自动化测试应能够独立运行且无特定顺序&#xff0c;并且测试结果不应依赖于先前测试的结果。 但是在某些情况下&#xff0c;可以证明特定的测试执行顺序是正确的&#xff0c;尤其是在集成或端到端测试中。 默认情况下&#xff0c;在JUnit 5中&#xf…

HDMI光端机常见故障和解决方法大全

HDMI光端机&#xff0c;HDMI光纤延长器&#xff0c;由发射机和接收机组成&#xff0c;是光纤传输HDMI高清音视频的完美解决方案&#xff0c;能通过单芯单模或多模光纤把HDMI高清音视频、红外遥控功能传输到远端。在广泛领域应用中&#xff0c;往往需要把HDMI信号源输送远处进行…

linux alsa 音频管理,在Linux上的高级音频控制

Linux音频控制与Linux音频系统结构一样混乱。 长篇小说&#xff0c;经过多年的发展&#xff0c;默认的声音控制工具看起来像这样&#xff1a;设置音量级别的默认和唯一选项可能对于大多数用户来说是足够的&#xff0c;但是当您想要设置特定音频级别或为不同音频源定义各自的设置…

物联网未来发展的十大趋势

根据IoTAnalytics的预测&#xff0c;到2020年&#xff0c;全球活跃的物联网设备数量预计将达到100亿台&#xff0c;到2025年或将达到220亿台&#xff1b;另外根据EnterpriseCIO的预测&#xff0c;到2020年&#xff0c;物联网的市场规模将增长到4570亿美元&#xff0c;年复合增长…

一分钟了解:物联网在医疗领域的应用(视频)

【科普】医疗物联网应用给我们带来了哪些改变&#xff0c;智慧医疗都有哪些&#xff1f;医疗物联网是指在标准和交互通信协议的基础上&#xff0c;通过利用射频识别技术、传感器技术以及定位技术等&#xff0c;进一步结合先进的通信网络设备、移动终端设备等对医疗对象进行处理…

java 基础包的功能_Java 8的功能基础

java 基础包的功能Java 8彻底改变了Java。 它很可能是过去10年中最重要的Java版本。 有很多新功能&#xff0c;包括默认方法&#xff0c;方法和构造函数引用以及lambda&#xff0c; 仅举几例 。 更有趣的功能之一是新的java.util.stream API&#xff0c;正如Javadoc所述&#…

PDH光端机的原理_PDH光端机的作用优点

随着通信技术的不断发展&#xff0c;自从有了PDH光端机这个新的设备&#xff0c;在信息的传输方面真的便利了我们很多&#xff0c;不过&#xff0c;对于这个新的装备PDH光端机&#xff0c;估计大多数小伙伴都不太了解吧&#xff0c;那么为了让大家跟上时代的步伐&#xff0c;接…

linux usb声卡 submit urb,linux usb urb详解

linux usb urb详解谨以此文纪念过往的岁月一.前言在前文中看过了hub的驱动以及host的驱动还有usb设备的驱动&#xff0c;在把这些东西关联起来的东东中&#xff0c;一个很重要的urb(usb request blk)&#xff0c;在本文中会详细来看urb的实现&#xff0c;以及具体的应用。二.Ur…

新一代蓝牙对工业物联网(IIOT)的应用

蓝牙是一种收到市场广大认可的一种无线通信技术&#xff0c;并且得益于Mesh组网、低功耗和传输速度快等方面的优势&#xff0c;蓝牙在工业物联网中也起着极为重要的地位。 此外市场上的无线连接技术有着很多的种类&#xff0c;每项技术都这其优缺点和使用环境&#xff0c;包括w…

【渝粤教育】国家开放大学2019年春季 8042-22T养殖业基础 参考试题

科目编号&#xff1a;[8042] 座位号 2018-2019学年度第二学期期末考试 养殖业基础 试题 2019年 5月 一、名词解释&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 1.必需氨基酸 2&#xff0e;嗳气 3&#xff0e;质量性状 4.人工授精 5.负…

LoRa通信技术和其优势

LoRa 是LPWAN通信技术中的一种&#xff0c;是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案的出现改变了以往关于传输距离和功耗需要折中的考虑方式&#xff0c;为用户提供了一种简单的能实现远距离通信、电池寿命长、大容量的系统&#xff0c…

【渝粤教育】电大中专常用电器与PLC控制 (2)作业 题库

1.三相笼型异步电动机的电气控制线路中&#xff0c;如果使用热继电器作过载保护&#xff0c;就不必再装设熔断器作短路保护。 A.正确 B.错误 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.交流接触器通电后如果铁心吸合受阻&#xff0c;将导致圈烧毁。 A.正确 B…

Linux下读取smBIOS源码,Linux下读取SMBIOS信息

来源&#xff1a;http://www.linuxde.net/2013/02/12499.htmluefi shell下使用smbiosviewlinux下使用dmidecode 或者amidecode(amidecode貌似只支持服务器端AMI平台产品)使用方法 dmidecode -t type_numtype_num表规范如下&#xff1a;SMBIOS specification 2.7.1 中定义了如下…

E95-DTU(4G01-485)数传电台的特点及其应用详解

1、E95-DTU(4G01-485简介 E95-DTU(4G01-485)是采用 4G CAT1 方案的云数传电台&#xff0c;电台支持微信小程序简单配对使用。可以显现一对一、一对多、多对多等复杂应用场景。由于采用了云技术&#xff0c;数传电台相互透传的距离不受限制。 云数传电台作为一种突破性的数传产…