1、介绍
?eclipse form是eclipse 3.0的新特性
?eclipse form是一组定制小部件和支持类组成的插件,以前由pde和update组件内部使用,在eclipse 3.0中已经成为公用api
?eclipse form提供:
* 适合包含到内容区域(编辑器或视图)中的“form”概念
* 用来管理颜色、超链接组和其它象swt控件一样的form外观的工具包
* 象html表格一样布局的新布局管理器
* 为form设计的定制控件(超链接、图像链接、可滚动的composite等)
* 每页是一个form的多页编辑器(就象pde)
2、快速入门
(1)helloworld例子
?下面的例子在视图中创建一个空的form
| public class formview extends viewpart { private formtoolkit toolkit; private scrolledform form; public void createpartcontrol(composite parent) { toolkit = new formtoolkit(parent.getdisplay()); form = toolkit.createscrolledform(parent); form.settext("hello, eclipse forms"); } public void setfocus() { form.setfocus(); } public void dispose() { toolkit.dispose(); super.dispose(); } } |
?首先要创建formtoolkit对象实例
?由formtoolkit创建form对象(这里是scrolledform)
?调用scrolledform的settext()方法,在form的顶部设置标题内容
?注意:最后要dispose管理资源的formtoolkit对象
?要在workbench中运行,需要plugin.xml中,将org.eclipse.ui.forms添加到必需插件列表,并注册视图
| <?xml version="1.0" encoding="utf-8"?> <?eclipse version="3.0"?> <plugin id="formsamples" name="formsamples plug-in" version="1.0.0" provider-name="nelson_tu" class="org.xqtu.samples.formsamplesplugin"> <runtime> <library name="formsamples.jar"> <export name="*"/> </library> </runtime> <requires> <import plugin="org.eclipse.ui"/> <import plugin="org.eclipse.core.runtime"/> <import plugin="org.eclipse.ui.forms"/> </requires> <extension point="org.eclipse.ui.views"> <view class="org.xqtu.samples.views.formview" name="form sample" id="formview"/> </extension> </plugin> |
(2)添加内容
| public void createpartcontrol(composite parent) { toolkit = new formtoolkit(parent.getdisplay()); form = toolkit.createscrolledform(parent); form.settext("hello, eclipse forms"); composite body = form.getbody(); gridlayout layout = new gridlayout(); body.setlayout(layout); hyperlink link = toolkit.createhyperlink(body, "click here.",swt.wrap); link.addhyperlinklistener(new hyperlinkadapter() { public void linkactivated(hyperlinkevent e) { system.out.println("link activated!"); } }); } |
?首先获得form的体内容,它是一个composite对象
?设置其布局为gridlayout
?通过formtoolkit创建一个超链接(hyperlink)控件
?添加超链接事件侦听器,响应超链接的点击
(3)添加通用控件
?由于form的体内容是一个composite对象,所以允许在其中创建swt控件
?但是swt控件是被设计为适合窗口、对话框的,所以在form中使用是有问题的
?在form中,使用formtoolkit创建对应的通用控件
| public void createpartcontrol(composite parent) { toolkit = new formtoolkit(parent.getdisplay()); form = toolkit.createscrolledform(parent); form.settext("hello, eclipse forms"); composite body = form.getbody(); gridlayout layout = new gridlayout(); body.setlayout(layout); hyperlink link = toolkit.createhyperlink(body, "click here.",swt.wrap); link.addhyperlinklistener(new hyperlinkadapter() { public void linkactivated(hyperlinkevent e) { system.out.println("link activated!"); } }); layout.numcolumns = 2; griddata gd = new griddata(); gd.horizontalspan = 2; link.setlayoutdata(gd); label label = toolkit.createlabel(body, "text field label:"); text text = toolkit.createtext(body, ""); text.setlayoutdata(new griddata(griddata.fill_horizontal)); text.setdata(formtoolkit.key_draw_border, formtoolkit.text_border); button button = toolkit.createbutton(body,"an example of a checkbox in a form", swt.check); gd = new griddata(); gd.horizontalspan = 2; button.setlayoutdata(gd); toolkit.paintbordersfor(body); } |
?上面的例子添加了三个通用控件:label、text和checkbox
?由于缺省创建的text控件的外观是3d的,而要达到象pde一样的flat外观,需要做些额外工作:
1) 调用setdata()方法,添加重画边框的附加信息
2) 调用formtoolkit的paintbordersfor()方法重画flat外观的边框
闽公网安备 35060202000074号