替代 SWT GridData 更简单有效的方法

本文介绍JFace中的GridDataFactory类,它简化了SWT中GridData的使用,通过几个实例对比展示了如何用更简洁的方式设置组件布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        随便看看JFace 的package ,发现了一个名字很有意思的类GridDataFactory,可以用来代替SWT中GridData的使用,而且特别方便。以下直接copy了源代码前面的说明,使用很简单,看一下就明白了。求知欲望更强烈的可以看一下它的源代码。

 

* // Example 1: Typical grid data for a non-wrapping label
 * 
 
*     // GridDataFactory version
 *     GridDataFactory.fillDefaults().applyTo(myLabel);
 
* 
 
*     // Equivalent SWT version
 *     GridData labelData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
 
*     myLabel.setLayoutData(labelData);
 
* 
 
* ///////////////////////////////////////////////////////////
 * // Example 2: Typical grid data for a wrapping label
 * 
 
*     // GridDataFactory version
 *     GridDataFactory.fillDefaults()
 
*          .align(SWT.FILL, SWT.CENTER)
 
*            .hint(150, SWT.DEFAULT)
 
*            .grab(truefalse)
 
*          .applyTo(wrappingLabel);
 
*      
 
*     // Equivalent SWT version
 *     GridData wrappingLabelData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);
 
*     wrappingLabelData.minimumWidth = 1;
 
*     wrappingLabelData.widthHint = 150;
 
*     wrappingLabel.setLayoutData(wrappingLabelData);
 
* 
 
* //////////////////////////////////////////////////////////////
 * // Example 3: Typical grid data for a scrollable control (a list box, tree, table, etc.)
 * 
 
*     // GridDataFactory version
 *     GridDataFactory.fillDefaults().grab(truetrue).hint(150150).applyTo(listBox);
 
* 
 
*     // Equivalent SWT version
 *     GridData listBoxData = new GridData(GridData.FILL_BOTH);
 
*     listBoxData.widthHint = 150;
 
*     listBoxData.heightHint = 150;
 
*     listBoxData.minimumWidth = 1;
 
*     listBoxData.minimumHeight = 1;
 
*     listBox.setLayoutData(listBoxData);
 
* 
 
* /////////////////////////////////////////////////////////////
 * // Example 4: Typical grid data for a button
 *
 
*     // GridDataFactory version
 *     Point preferredSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
 
*     Point hint = Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
 
*     GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(hint).applyTo(button);
 
*
 
*     // Equivalent SWT version
 *     Point preferredSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
 
*     Point hint = Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
 
*     GridData buttonData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
 
*     buttonData.widthHint = hint.x;
 
*     buttonData.heightHint = hint.y;
 
*     button.setLayoutData(buttonData); 

 

       类似的还有一个GridLayoutFactory。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值