作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心从事软件开发(2004.2-?),专注基于java平台的软件开发,我想写一本关于Eclipse插件开发的书,有书商原意帮忙吗?
MSN: glchengang@hotmail.com
Email: glchengang@163.com
blog: glchengang.yeah.net
本章源代码下载:myplugin2.rar
一、简介,要用SWT/JFace开发必须选学会布局管理器的使用,这是SWT学习中非常重要也非常基础的知识。什么是布局管理器,简单来说就是图形界面的上控件的摆放方式,一种方式就脱变成一种布局管理器。在SWT中主要有四种常用的布局管理器
- RowLayout,简单的排列控件。
- FillLayout ,充满型的控件布局方式。
- GridLayout,最常用的也是最强大的,表格型布局方式。
- StackLayout,堆栈式的布局方式,就象书一样,每次只有一个控件在上面。
简单介绍布局管理器,接下来我来看看界面控件有那些。
- 容器类的,所谓容器就是其可以装入界面控件的。Composite(上一章介绍过),Group(分组),SashForm(分割窗口),TabFolder(项目栏),这里注意Composite一般是看不见的。
- 控件类。Button(按钮),Text(文本框),TreeVeiw(树型框)等,所有的控件类都要依附在某种容器类中。
二、RowLayout布局管理器。
1、新建一个类如下。
public class RowLayoutSample extends Dialog {
public RowLayoutSample(Shell parentShell) {
super(parentShell);
}
protected Control createDialogArea(Composite parent) {
Composite c = new Composite(parent, SWT.NONE); //在面板parent里再嵌一个面板c
RowLayout rowLayout = new RowLayout(); //默认是横向排,加一个参数SWT.VERTICAL则是竖向排
rowLayout.marginTop = 10; //离上边的间距
c.setLayout(rowLayout); //面板c采用RowLayout布局方式
new Button(c, SWT.NONE).setText("button1"); //在面板c里建立三个按钮,diR&件Wad)"HI
new Button(c, SWT.NONE).setText("button2"); //这三个按钮是以行方式来排列的。
new Button(c, SWT.NONE).setText("button3");
return parent;
}
}
2、将上一章的SampleAction类的run方法改动如下:
public void run(IAction action) {
RowLayoutSample dialog = new RowLayoutSample(window.getShell());
dialog.open();
}
3、运行插件,效果如下图1(以调试方式运行,这样我们改代码的时候就不用再启动插件了,Eclipse支持一般的热修改)。
图1 图2:new RowLayout(SWT.VERTICAL)时的效果
图3。marginLeft = 50的效果(左边距宽了)
4、在我的开发实践中RowLayout用得极少,
v5oDyAIsqD垠e
B专7ix教W提frBTti5Bi因为其功能太弱,适用的布局情况太少,并且GridLayout完全可以替代它。
三、在这里进来介绍一个用于SWT界面开发的工具SWT Desiger.
- SWT Desiger支持界面控件的拖拉操作,Xr{教ZiA业sx;\有了它做起界面设计来就轻松多了,但千万别指望它能做完所有的事情,事实上它只是一个设计的辅助工具,你依然需要掌握手写界面代码的能力。我做界面的一般流程是这样的:(1)新开一个application文件,用SWT Desiger快速做好整体的界面布局。(2)将其代码移植到我的项目中,并进行修改和精简。(3)以后界面的修改都是手写代码修改了,但如果你对SWT包还不熟,依然可以用SWT Desiger来获得一些自动生成的代码。
- 下载地址:http://www.swt-designer.com/ ,需要你注册,但有free版可供下载,无时间限制,但有功能限制,但提供的功能足够了,因为我基本只用到它的布局功能。
- 安装方法:将其解压后复制到Eclipse的plugin目录下。然后Eclipse主菜单:文件->新建->其它,里面多了一个SWT(具体使用方法见:四、FillLayout布局管理器。)。
- 运行方法:如果你不想象本文那样以插件方式运行。SWT Designer设计后也可以以Applicate方式运行,这时注意在运行的时候要加一行参数,否则是无法运行成功的。设置方法:“运行->运行(N)....”->选“JAVA应用程序”再左下角的“新建(W)”,然后在新建的项目的“(x)=自变量”项->VM自变量(G)中填入下面这一行:
四、FillLayout布局管理器。
这里我就不象用插件了,因为这一章讲的其实是通用的,不一定是做插件才用到,象application、applet都要用。为了讲述方便,我们本章的剩余内容就全部以application的方式来讲,并且就前面三.1讲的做界面的流程,来讲讲application写好后怎么移植到插件项目中。
1、第一个SWT的Application。
文件->新建->其它->左选SWT ,右边选SWT Application(如下图)
再点击“下一步”,将类名定好,如下图:
点击完成。这时你可以看到编辑框的左下角如下。这里有一些默代码了,点击“Design”得图如下。
这已经是一个默认的Application了,h垠q教S网v?%&&~H%M要运行,请参照上面“三.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();
}
}
}
运行界面如下图(默认为水平铺方式):
将composite的layout->style->dir属性改为vertical(垂直平铺方式),ISs2}T.25ZL\I件uT}`@|Z软+V提6e?n.m@6B运行界面如下图
3、总结。FillLayout虽然其功能单一,rx8HY无Fp垠网@\网_]n,但由于其自动充满窗口的方式,在JAVA界面设计中是很常用的,它是使用频率仅次于GridLayout的布局方式。
预告:下一小节将重点讲叙GridLayout布局方式,GridLayout可以说是全能布局器,它完全可以代替FillLayout和RowLayout的功能(当然有时会麻烦些)。
分享到:
相关推荐
swt布局管理,各种布局方式,满足你多元化的需求。
SWT中常用的布局管理器有如下一些。 ●FillLayout:子组件将以相同的大小填充到父组件中。 ● RowLayout:子组件将在父组件上一行或几行显示(设置相应的属性值,子组件会自动换行)。 ●GridLayout:网格式布局,子...
本节将介绍SWT中布局管理器,布局管理器是最复杂的,也是最重要的。布局管理器有五种,分别是FillLayout(充满式布局)、RowLayout(行列式布局)、GridLayout(网格式布局)、FormLayout(表格式布局)和...
容器与布局5管理器.pdf,swt,eclipse插件开发笔记 容器与布局5管理器.pdf,swt,eclipse插件开发笔记 容器与布局5管理器.pdf,swt,eclipse插件开发笔记容器与布局5管理器.pdf,swt,eclipse插件开发笔记
简单的学生管理系统,只有增删改查功能。 布局使用了 Composite面板,自己写的入门级别的。为了是联系一下,以前没有接触过、算是了解。
迁移适用于Swing,SWT和JavaFX的官方MiG布局对于手工编写GUI布局的Java开发人员来说,他们希望简单,强大和每个平台都能自动保真,而对于Swing,JavaFX和SWT中的当前布局管理器却不满意,MigLayout解决了您的布局...
SWT中没有AWT的BorderLayout布局管理器。下面是SWT下的自定义实现: BorderLayout.java 代码如下:package swt_jface.demo2; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org....
第7章 SWT布局管理器 98 7.1 布局管理器概述 98 7.1.1 绝对定位 98 7.1.2 托管定位 98 7.1.3 常见的布局管理器 100 7.2 FillLayout(充满式布局) 100 7.2.1 水平填充(默认)和垂直填充 101 7.2.2 ...
MiG Layout是功能最丰富,最灵活的Java Swing和SWT Layout Manager。 MiG Layout可以生成流畅的,基于网格的,绝对的(带有链接),分组的和对接的布局,您再也不必切换到另一个布局管理器了!
07第5章 容器与布局5管理器.pdf 08第6章 界面开发工具.pdf 09第7章 高级控件使用.pdf 10第8章 SWT/JFace的事件处理.pdf 11 第二篇 核心技术.pdf 12 第9章 Eclipse插件体系结构.pdf 13 第10章 开发第一个插件...
然后,用java解释器运 行主类: 主界面 六、具体分工 我参与设计添加页面,添加方法,删除页面,查询部分操作资以及源管理模块,背景 框格布局操作。 添加界面 删除界面 七、 程序设计 1. 主程序设计模块 package ...
第5章 容器与布局管理器 第6章 界面开发工具 第7章 高级控件使用 第8章 SWT/Jface的事件处理 第二篇 核心技术 第9章 Eclipse插件体系结构 第10章 开发 第一个插件项目 第11章 操作(Actions) 第12章 视图(Views) 第...
17.4 SWT中的布局管理器 302 17.4.1 RowLayout布局管理器 302 17.4.2 FillLayout布局管理器 304 17.4.3 GridLayout布局管理器 305 17.4.4 FormLayout布局管理器 308 17.5 SWT中的事件模型 309 17.6 本章小结 313 第...
插件开发核心技术,主要介绍插件开发的核心知识要点...View: Draw2d 图形化界面 Control 核心 mode 用户设计 (绘图,着色,图形布局管理,图形缩放控制) SWT 画布 Canvas,处理所有图像显示及交互事件 (本地SWT层)
2 布局管理器(相对位置布局, 组件的大小和位置有布局控制) A BorderLayout (边框布局) 将一个面板,分为东南西北中,每个位置只能放一个控件 中会自动的向其他的四个方法填充 ---------------------------- | 北...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...