快速业务通道

组织SWT/JFace控件的利器:Layout - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
你可以使用控件的setLocation来设置,也可以使用FormAttachment提供的偏移量去达到同样的效果。

FormData data = new FormData(); data.left = new FormAttachment(0, 20); data.top = new FormAttachment(0, 40); button.setLayoutData(data);

上面的代码相当于setLocation(20, 40),即将按钮设置的位置设置成(20, 40)。

根据其它控件的调整位置

一般在窗体上都有不只一个控件,这些控件之间都是有一定关系的,它们的位置也是相对的。因此,FormLayout为我们提供了根据其它控件设置当控件位置的方法。如根据另外一个控件设置当前控件左边或右边的位置。

下面的例子将根据一个按钮的位置设置另外一个按钮的位置。有两个按钮,第二个按钮根据第一个按钮的底边设置自己的位置。

Button button1 = new Button(shell, SWT.PUSH); button1.setText("按钮1"); FormData data1 = new FormData(); data1.top = new FormAttachment(20); data1.left = new FormAttachment(40); data1.right = new FormAttachment(50); button1.setLayoutData(data1); // 第二个按钮 Button button2 = new Button(shell, SWT.PUSH); button2.setText("按钮2"); FormData data2 = new FormData(); data2.left = new FormAttachment(button1, 0, SWT.CENTER); data2.top = new FormAttachment(button1); button2.setLayoutData(data2);

上面的"按钮2"将根据"按钮1"将自己水平方向的位置设置成"按钮1"的中心位置。

组织SWT/JFace控件的利器:Layout(5)

时间:2010-04-15 天极

StackLayout

我们在最后一部分来讨论StackLayout,并不是因为StackLayout在这5种布局中最复杂,而是这个布局并不在org.eclipse.swt.layout中,而在org.eclipse.swt.custom中。从这个布局的名子可看出,它是将许多SWT控件放到一个集合中,这些控件有同样的尺寸和位置。但只有在最上面的控件才能被显示。

StackLayout只有一个空的构造函数,它只有一个属性topControl,这个属必确定了哪一个控件可以被显示。这个属性默认值是null,也就是说,如果不设置它,那将没有控件被显示在窗体上。但要注意的是,设置topControl并不会将StackLayout中控件删除。

package layout; import org.eclipse.swt.events.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.SWT; public class TestStackLayout {  public static void main(String[] args)  {   Display display = new Display();   Shell shell = new Shell(display);   StackLayout layout = new StackLayout();   shell.setLayout(layout);   StackLayoutSelectionAdapter adapter = new StackLayoutSelectionAdapter(shell, layout);   Button one = new Button(shell, SWT.PUSH);   one.setText("按钮1");   one.addSelectionListener(adapter);   Button two = new Button(shell, SWT.PUSH);   two.setText("按钮2");   two.addSelectionListener(adapter);   Button three = new Button(shell, SWT.PUSH);   three.setText("按钮3");   three.addSelectionListener(adapter);   layout.topControl = one;   shell.open();   while (!shell.isDisposed())   {    if (!display.readAndDispatch())    {     display.sleep();    }   }   display.dispose();  } } class StackLayoutSelectionAdapter extends SelectionAdapter {  Shell shell;  StackLayout layout;  public StackLayoutSelectionAdapter(Shell

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号