服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

eclipseform程序设计指南之入门


  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外观的边框

扫描关注微信公众号