随笔 - 119  文章 - 3173  trackbacks - 0
<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

交友莫独酒,茅台西凤游。
口干古井贡,心徜洋河流。
称多情杜康,趟无量双沟。
赞中华巍巍,无此不销愁。

常用链接

留言簿(68)

随笔分类(136)

随笔档案(122)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 520462
  • 排名 - 93

最新评论

    我们的日期控件有两大部分组成:控件主体和下拉列表。要做成通用控件,控件主体必须要能自适应大小。
老规矩,上图:

设计界面:



在其它容器中自由使用的效果图:




那么怎么才能做到自写的控件能自适应大小呢?CompositeFormLayout是实现这种效果的完美组合。通俗的说Composite就是一个容器,里面能放各种其它控件,当然Composite本身也能放到其它容器里面。FormLayout是一种布局方式,精髓是“相对位置”。( 跟我学之用FormLayout打造自适应窗体大小的控件布局)。
Composite我们放置一个文本框和一个按钮。

这里我们设置
文本框上边相对
Composite上边,偏移量0。
文本框左边相对Composite左边,偏移量0。
文本框右边相对按钮,偏移量0。
文本框下边相对Composite下边,偏移量0。


按钮上边相对Composite上边,偏移量0。
按钮左边相对Composite右边边,偏移量17。
按钮右边相对Composite右边,偏移量0。
按钮下边相对Composite下边,偏移量0。

这样我们就整体实现文本框。按钮的高度跟随Composite变化。
按钮宽度固定。文本框宽度
跟随Composite变化。
代码片段:
        arrow = new Button(this, arrowStyle);
        arrow.addSelectionListener(arrowListener);
        
final FormData formData = new FormData();
        formData.left 
= new FormAttachment(100-17);
        formData.right 
= new FormAttachment(100-0);
        formData.top 
= new FormAttachment(00);
        formData.bottom 
= new FormAttachment(100-0);
        arrow.setLayoutData(formData);

        text 
= new Text(this, SWT.READ_ONLY);
        
final FormData formData_1 = new FormData();
        formData_1.right 
= new FormAttachment(arrow, 0, SWT.LEFT);
        formData_1.top 
= new FormAttachment(00);
        formData_1.bottom 
= new FormAttachment(100-0);
        formData_1.left 
= new FormAttachment(00);
        text.setLayoutData(formData_1);

posted on 2006-12-25 13:26 交口称赞 阅读(1965) 评论(0)  编辑  收藏 所属分类: Eclipse RCP SWT

只有注册用户登录后才能发表评论。


网站导航: