快速业务通道

开发Eclipse自定义控件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

开发Eclipse自定义控件

时间:2011-02-09 IBM 梁骞

目标读者必须熟悉Java开发,并且有一定的Eclipse开发经验。

在Eclipse网站上有一篇相关的文章"Creating Your Own Widgets using SWT",该文介绍了开发自己控件的很多基本概念、方法,并且通过实例进行了介绍,非常好。但是其所用的实例比较简单,还有很多控件开发中所要涉及到的内容,例如键盘、鼠标事件的处理,滚动条、焦点的处理等等没有提及。本文通过开发一个自定义的颜色列表控件的实例,全面地介绍了自定义控件所涉及的技术。同时,读者也可以对该实例进行扩展,实现自己的列表控件。

SWT中提供的标准列表控件非常简单,只能提供字符串的选择。我们经常需要提供一些图形列表供用户选择,这就需要自己开发自定义的列表控件。颜色选择列表是我们常用的一种图形列表,我们就以此为例进行介绍。以下是我们将要开发的颜色列表。

我们在开发自定义控件时主要考虑以下问题:

1、自定义控件的绘制:通常我们需要自己对控件的形状或图案进行绘制;

2、控件对键盘事件的响应:当焦点进入控件,用户进行键盘操作,通过键盘对控件进行控制时,我们需要让控件对用户的操作进行响应。例如在列表中,用户会通过上下箭头改变列表的选择项;

3、控件对鼠标事件的响应:当用户用鼠标选中控件,进行操作时,控件必须作出相应的反应;

4、控件对焦点事件的响应:当界面焦点进入或移出控件,通常我们需要将控件绘制成得到或失去焦点的形状。例如,当焦点进入列表时,一般被选中的列表项会有虚框表示选中。

5、响应TAB键:对于一个可操纵的控件,用户可以用TAB键将焦点移入或移出。

6、响应滚动条事件:当控件有滚动条时,我们需要响应用户对滚动条的操作,完成对控件的绘制工作。

7、提供事件监听机制:程序员使用你的控件时通常需要监听控件中发生的一些事件,这样当事件发生时,他们能够进行相应处理。

8、提供辅助功能(Accessibility):辅助功能是方便残障人士使用时必须的,标准控件都会提供相应的支持,我们自定义的控件也不例外。

9、提供功能接口方便程序员访问:通常为方便程序员使用时获取控件中的信息或进行设置,我们需要提供一些接口。

首先我们要开发的列表控件是一个基本控件,所以我们选择Canvas作为我们开发的基类。

public class ColorList extends Canvas {   Vector colors = new Vector(); // 用于保存我们颜色控件中的颜色值   Vector colorNames = new Vector(); // 用于保存颜色控件中的颜色名字   int rowSel = -1; // 用于保存当前选中的行号   int oldRowSel = -1; // 用于保存上一次选中的行号   int maxX, maxY; // 用于保存列表的宽度和高度   int lineHeight; // 用于设置行高   int cx = 0; // 滚动条滚动后,控件的图形相对于控件可见区域左上角的x坐标   int cy = 0; // 滚动条滚动后,控件的图形相对于控件可见区域左上角的y坐标   }

?a·¢Eclipse×??¨ò????t(2)

ê±??:2011-02-09 IBM áo?1

???t?a·¢×???òaμ??íê????tμ?????á??£???tμ??????éò?í¨1yìí?óPaintListener£??ú?üμ?paintControl·?·¨?D??DD?£

addPaintListener(new??PaintListener()??{ ???? public??void??paintControl(PaintEvent??e)??{ ???? GC??gc??=??e.gc; ???? Point??size??=??getSize(); ???? int??beginx??=??e.x; ???? int??beginy??=??(e.y??/??lineHeight)??*??lineHeight; ???? int??beginLine??=??(e.y??-??cy)??/??lineHeight; ???? int??endLine??=??beginLine??+??e.height??/??lineHeight??+??1; ???? if??(endLine??>??getItemCount())

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