当前页面: 开发资料首页 → Eclipse 专题 → Eclipse插件开发系列(5):SWT中的布局管理器(1)
摘要: RowLayout FillLayout Eclipse swt 布局管理器
作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心从事软件开发(2004.2-?),专注基于java平台的软件开发,我想写一本关于Eclipse插件开发的书,有书商原意帮忙吗?
MSN: glchengang@hotmail.com
Email: glchengang@163.com
blog: glchengang.yeah.net
本章源代码下载:500)this.width=500" border=0>myplugin2.rar
一、简介,要用SWT/JFace开发必须选学会布局管理器的使用,这是SWT学习中非常重要也非常基础的知识。什么是布局管理器,简单来说就是图形界面的上控件的摆放方式,一种方式就脱变成一种布局管理器。在SWT中主要有四种常用的布局管理器
简单介绍布局管理器,接下来我来看看界面控件有那些。
500)this.width=500" border=0
二、RowLayout布局管理器。
1、新建一个类如下。
public class RowLayoutSample extends Dialog {
2、将上一章的SampleAction类的run方法改动如下:
public void run(IAction action) {
RowLayoutSample dialog = new RowLayoutSample(window.getShell());
dialog.open();
}
3、运行插件,效果如下图1(以调试方式运行,这样我们改代码的时候就不用再启动插件了,Eclipse支持一般的热修改)。
500)this.width=500" border=0 500)this.width=500" border=0
图1 图2:new RowLayout(SWT.VERTICAL)时的效果
500)this.width=500" border=0
图3。marginLeft = 50的效果(左边距宽了)
4、在我的开发实践中RowLayout用得极少,因为其功能太弱,适用的布局情况太少,并且GridLayout完全可以替代它。
三、在这里进来介绍一个用于SWT界面开发的工具SWT Desiger.
如下图:
500)this.width=500" border=0
四、FillLayout布局管理器。
这里我就不象用插件了,因为这一章讲的其实是通用的,不一定是做插件才用到,象application、applet都要用。为了讲述方便,我们本章的剩余内容就全部以application的方式来讲,并且就前面三.1讲的做界面的流程,来讲讲application写好后怎么移植到插件项目中。
1、第一个SWT的Application。
文件->新建->其它->左选SWT ,右边选SWT Application(如下图)
500)this.width=500" border=0
再点击“下一步”,将类名定好,如下图:
500)this.width=500" border=0
点击完成。这时你可以看到编辑框的左下角如下。这里有一些默代码了,点击“Design”得图如下。
500)this.width=500" border=0
500)this.width=500" border=0
这已经是一个默认的Application了,要运行,请参照上面“三.4”的运行方法。
2、在Application中的FillLayout的例子:
通过拖拉操作,得到如下的源代码:
public class FillLayoutApplication {
public static void main(String[] args) {
FillLayoutApplication window = new FillLayoutApplication();
window.open();
}
public void open() {
final Display display = new Display();
final Shell shell = new Shell();
shell.setLayout(new FillLayout());
shell.setText("SWT Application");
{
final Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
{
final Button button = new Button(composite, SWT.NONE);
button.setText("button");
}
{
final Button button = new Button(composite, SWT.NONE);
button.setText("button");
}
}
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
运行界面如下图(默认为水平铺方式):
500)this.width=500" border=0 500)this.width=500" border=0
将composite的layout->style->dir属性改为vertical(垂直平铺方式),运行界面如下图
500)this.width=500" border=0 500)this.width=500" border=0
3、总结。FillLayout虽然其功能单一,但由于其自动充满窗口的方式,在JAVA界面设计中是很常用的,它是使用频率仅次于GridLayout的布局方式。
预告:下一小节将重点讲叙GridLayout布局方式,GridLayout可以说是全能布局器,它完全可以代替FillLayout和RowLayout的功能(当然有时会麻烦些)。