SWT 小结(一)

Display:  代表一个底层的操作系统, 
Shell: 代表一个top-level window
// 检查用户有没有关闭主窗口
while(!shell.isDisposed)) {
 
 // 检查队列中是否有event, 如果没有就sleep
 if (!display.readAndDispatch()) {
  display.sleep();
 }
}
// 最后就把display 销毁掉
display.dispose();
swt 使用本地操作系统库, 只是在外面覆盖了一层java 代码, 所以 java widget 和 native widget的生命周期相同
构造Widget, 要指定父组件及其风格
Widget chilren = new Widget(parnet, style);
为什么要销毁掉widget
虽然java 的gc 的管理内存十分的优秀, 但是gui 资源是底层的, 重量级的, 所以他们是非常有限的
Color color = new Color(display, 255, 0, 0)
rule 1:  我创造的, 我必须销毁它
color.dispose();
rule2 : 销毁父容器, 会自动销毁父容器里面的子控件
销毁掉容器后, 我们不应该继续调用它。 否则会出现SWTException
Display 详细解析
Display 维持了一个eventQueue, 每次用户的操作都会生成一个Event, 并填充到EventQue中, readAndDispatch()方法
检查队列中是否有要执行的Event, 并把队列中的第一个Event取出执行, 这个执行是调用相应的监听器去执行.
二 布局管理
FillLayout: 放置组件在 单一的 行 或者列, 组件有相同的Size.
FillLayout(int type): type为SWT.HORIZONTAL / SWT.VERTICAL, 则组件在同一行 / 列,
FillLayout layout = new FillLayout(SWT.HORIZONTAL);
shell.setLayout(layout);
RowLayout: 和FillLayout 类似, 也是把组件放在同一行或者同一列, 但是不强制组件具有相同的大小.
rowLayout的属性
justify: 控制是否对齐  
wrap: 当前行或者列显示不下时,控制是否换行。
type: 与FillLayou类似
GridLayout: 本质上分成一个一个的Cell, 有的控件占用几个Cell.
GridLayout 属性
numcolmuns: 总共有几列
makeColumnsEqualWidth: 是否等宽
marginWidth: 组件左右两边预留的空白
marginLeft: 组件左边预留的空白
horizontalSpacing: 两个相邻cell水平间距
GridData
grabExcessHorizontalSpace: 是否占用水平的额外空间
widthHint : 组件占用的最小的宽度
horizontalIndent: 在cell的左边缩进的 像素
horizontalAligment: 水平对齐的方式 BEGINNER, CENTER, END
horizontalSpan: 所占的cell 数目
StackLayout: 所有的控件都有相同的Size 和 postion, 控件都堆叠在一起,只有最上面的组件可见。
注意:虽然你手动设置的了topControl, 但是直到容器调用layout的时候才会起作用。
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值