gr8vyguy@Blogjava

使用Layout组织SWT的控件 - 1

SWTComposite可以使用Layout来对其子控件进行布局SWT 提供了5 种布局方式: FillLayout, RowLayout, GridLayout, FormLayoutStackLayout。你也可以定义自己的Layout 。下面将分别介绍这5 Layout 以及怎样定义一个新的Layout

FillLayout

FillLayoutSWT中最简单的Layout 它把控件以相同的大小分布在单行或者单列上FillLayout不会自动换行或者换列。通过参数你可以指定页边空白和控件之间距离的大小。

比如下面的代码

FillLayout layout = new FillLayout(SWT.HORIZONTAL);
layout.marginWidth 
= 50;
layout.marginHeight 
= 100;
layout.spacing 
= 20;

        
将指定如下图的 Layout

1.jpg 

如果使用SWT.VERTICAL控件将被安置在一列上。不指定什么参数,如果只贴加一个控件将填满窗口。

用Composite.setLayout(layout)
方法可以指定一个Composite Layout

FillLayout是按照子控件被贴加的顺序对子控件进行布局的,准确地讲是以子控件保存在Composite中顺序。而改变一个子控件的Z 顺序 ( moveAbove或者moveBelow) 会改变子控件的顺序。下面的例子演示了这一点,当你点一下按钮时,两个按钮会交换位置。

     public   static   void  main(String[] args) {
        
final  Display display  =   new  Display();
        
final  Shell shell  =   new  Shell(display);

        shell.setLayout(
new  FillLayout());
        Button btn1 
=   new  Button(shell, SWT.PUSH);
        Button btn2 
=   new  Button(shell, SWT.PUSH);
        btn1.setText(
" Button A " );
        btn2.setText(
" Button B " );

        Listener listener 
=   new  Listener() {
            
public   void  handleEvent(Event event) {
                ((Button) event.widget).moveAbove(
null );
                shell.layout();
            }
        };
        btn1.addListener(SWT.Selection, listener);
        btn2.addListener(SWT.Selection, listener);

        shell.open();
        
while  ( ! shell.isDisposed()) {
            
if  ( ! display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

程序如下图

    2.jpg

    Namenlos.jpg

SWT要求一个Layout 的实例(Instance)只能指定给一个Composite应该避免将同一个Layout 实例指定给多个Composite FillLayout不需要另外对每个子控件指定LayoutData ,而后面讲到的另外4 个布局类会需要LayoutData ,同样的, LayoutData 的实例也是不能被多个子控件所共享的,因为Layout有可能会在LayoutData 中缓冲子控件的位置大小信息,以提高性能。FillLayout是非常简单的布局算法,多用来放置一个子控件填满父窗口,而布置多个控件在一行或者一列用RowLayout比较实用。下一节讲RowLayout。


转载请保留http://www.blogjava.net/xilaile/archive/2007/02/17/100096.html


posted on 2007-02-17 00:50 gr8vyguy 阅读(4659) 评论(0)  编辑  收藏 所属分类: Java


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


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

  • 转载请注明出处.
  • msn: gr8vyguy at live.com
  • 常用链接

    留言簿(9)

    随笔分类(68)

    随笔档案(80)

    文章分类(1)

    My Open Source Projects

    搜索

    积分与排名

    最新评论