Eclipse 插件开发 SWT之Widget


Widget就是窗口小部件, 是组成用户界面的元素, 包含Menu、Item、Control等, Control是最常用的。

常用widget的结构关系如下:

1. Shell ( Widget->Control->Scrollable->Compsite->Decorations->Shell )

Shell是一个"Window", 就是当用户触发事件时弹出的窗口,是在每个窗口里最外层的"Composite",是组成图形界面的祖先Composite.

顶层的Shell 的定义是作为display的child定义的。

Shell shell = new Shell(display);

这里的display可能是parent.getDisplay( ),在单线程里可以先不用考虑display.display由UI线程创建。

2. Composite ( Widget->Control->Scrollable->Compsite )

composite作为复合控件,即在composite里可以添加其他控件(包括composite), 相当于一个盒子,里面可以放一些东西。

定义方式: Composite composite = new Composite ( parent, style );

parent代表的是父复合控件, Style 是用到SWT类里的静态整型变量,如SWT. BORDER , 使用符号 ‘|’ 间隔SWT常量可以让一个控件应用多个样式

复合控件(除了子元素是*Item的控件)若想添加别的控件,必须先布局,否则里面的控件无法显示

若想在最外层的composite添加滚动条,需要定义ScrolledComposite:

parentComposite.setLayout(new FillLayout()); //scrolledComposite 的父复合布局必须设为fillLayout
ScrolledComposite scrolledComposite = new ScrolledComposite(parentComposite, SWT.H_SCROLL|SWT.V_SCROLL);
Composite mainComposite = new Composite(scrolledComposite,SWT.NONE); //不要直接在scrolledComposite 添加控件
scrolledComposite.setContent(mainComposite); //必须有,scrolledComposite里的内容为mainComposite

.....
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.setMinWidth(800);
scrolledComposite.setMinHeight(400);
必须设置这4个方法滚动条才有作用 只有前两项为true,后两项才有作用

3. Button ( Widget->Control->Button )

Button button = new Button ( parent, style );

button类型如下:

如上图所示,SWT.PUSH是普通按钮;SWT.CHECK是选择按钮;SWT.RADIO是单选按钮,同一组单选按钮必须在同一个父复合控件里,不同组得单选按钮必须在不同的父复合控件里;SWT.ARROW是带箭头的按钮,默认是向上的按 钮, 若想实现不同方法的箭头的按钮,只需要在style里定义对应的方向即可,如向左方向的按钮,style为SWT.ARROW | SWT.LAFT。这四种样式在同一个button的style里只能出现其中一个。 常用的方法:button.setText("string"); 4. Combo Combo combo = new Combo ( parent, style ); 有三种样式:SWT.DROP_DOWN、SWT.SIMPLE、SWT.READ_ONLY 默认的类型是SWT.DROP_DOWN SWT.DROP_DOWN为下拉式列表 String string[] = { "aaa", "bbb", "ccc"}; Combo combo = new Combo ( parent, SWT.DROP_DOWN ); combo.setItem (string); //把string数组放入到combo中 combo.add ("ddd"); //添加一项字符串到combo combo.select(1); //默认选择一项,选择数组下标为1的值 combo.setVisibleItemCount(3); //设置下拉列表显示的长度
SWT.SIMPLE是普通样式的,把所有的元素都显示出来 SWT.READ_ONLY是下拉列表的只读样式 文本框那里不能编辑
优质内容筛选与推荐>>
1、并发编程——多进程
2、VUE2 第六天学习--- vue单文件项目构建
3、[原]由clob引发的性能问题所想到的(不是解决方案的方案)
4、对未来的投资和优秀资源配置的期望造成房价高了?
5、【面试题整理】数据库的优化方案有哪些


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号