快速业务通道

SWT和JFace,第3部分: 简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
l) {   TabItem ti = new TabItem(parent, style);   if (text != null) {     ti.setText(text);   }   if (icon != null) {     ti.setImage(icon);   }   if (ctl != null) {     ti.setControl(ctl);   }   return ti; } protected TabItem createTabItem(TabFolder parent,            String text, Image icon, Control ctl) {   return createTabItem(parent, SWT.NONE, text, icon, ctl); }

Canvas

Canvas 是最基本的控件类型之一,可以用它来创建定制控件或绘图。图 2 和 图 3 展示了使用 Canvas 来绘制由重叠的矩形和椭圆形组成的图片的一个例子。在这幅绘画中,一些图片被填充,而其他一些则没有被填充。颜色、大小和位置的分配是随意的。

清单 2 展示了用于创建 Canvas 的代码。要实际地在 Canvas 上进行绘图,必须向该 Canvas 添加一个 PaintListener。每当 Canvas 需要重新绘制其客户机区域的任何部分时,都需要调用其 paintControl 方法。有两种绘制风格:

直接绘制 —— 很简单,但内容在整个重绘期间是不稳定的。

在进行绘制之前构建一个模型,然后再根据此模型进行重新绘制 —— 比较复杂,但很稳定。这通常是首选方法。

清单 2. 用于创建 Canvas 的方法

protected Canvas createCanvas(Composite parent, int style,                 PaintListener pl) {    Canvas c = new Canvas(parent, style);    if (pl != null) {      c.addPaintListener(pl);    }    return c; } protected Canvas createCanvas(Composite parent, PaintListener pl) {    return createCanvas(parent, SWT.NONE, pl); }

SWT和JFace,第3部分: 简介(3)

时间:2011-03-20 IBM Barry Feigenbaum

作为绘制风格 2 的一个例子,可以考虑一下清单 3 中定义的简单模型:

清单 3. PaintItems 的层次结构

abstract protected class PaintItem {    public Color color;    public void paint(GC gc) {      gc.setForeground(color);      gc.setBackground(color);    } } abstract protected class BaseRectItem extends PaintItem {    public boolean fill;    public Rectangle extent; } protected class ElipseItem extends BaseRectItem {    public void paint(GC gc) {      super.paint(gc);      if (fill) {        gc.fillOval(extent.x, extent.y,              extent.width, extent.height);      }      else {        gc.drawOval(extent.x, extent.y,              extent.width, extent.height);      }    } } protected class RectangleItem extends BaseRectItem {    public void paint(GC gc) {      super.paint(gc);      if (fill) {        gc.fillRectangle(extent.x, extent.y,                extent.width, extent.height);      }      else {        gc.drawRectangle(extent.x, extent.y,                extent.width, extent.height);      }    } }

这些绘制项都由 清单 4 中显示的 PaintListener 绘制。paintControl 方法是随在其上进行绘制的图形上下文(org.eclipse.swt.graphics 包中的 GC)一起提供的。您可以使用 GC 绘制文本和许多形状。此代码将重用通过 Display 类可用的标准系统颜色。由 Canvas 决定是否使用某种背景色填充其区域。gcObjects 集合包含所有需要绘制的 PaintItem 实例。数组 colorIds 是一个到选定的系统颜

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号