开发Eclipse自定义控件

目标读者必须熟悉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坐标
  }

时间: 2024-09-13 02:04:13

开发Eclipse自定义控件的相关文章

Win10 UWP开发系列:开发一个自定义控件——带数字徽章的AppBarButton

原文:Win10 UWP开发系列:开发一个自定义控件--带数字徽章的AppBarButton 最近有个项目有一个这样的需求,在文章浏览页底部有几个AppBarButton,其中有一个是评论按钮,需要在评论按钮上显示一个红色数字,类似微信的新消息提醒: 这种设计在iOS和Android平台都是很常见的,但UWP上并没有提供现成的控件.所以只能自己实现一个了.   做出来效果是这样的:   分析一下实现的思路.首先这还是一个AppBarButton,只是其中增加了一个数字徽章的显示,这个属性应该是可

eclipse-Android开发 Eclipse能连接自己手机,但无法安装软件到手机上

问题描述 Android开发 Eclipse能连接自己手机,但无法安装软件到手机上 程序编好后,直接通过Eclipse装入手机时会控制台会显示这个错误,我确定自己的驱动已经装好,开发者模式已经打开,有没有人遇到过类似的情况,弄了几天了,还是搞不定,不得不伸手了,希望各位大神能帮我解答!感激不尽! 解决方案 你手机里有以前安装的吗,卸掉试试 解决方案二: 会不会是因为你的新建的项目的版本不兼容你的手机.(项目最低版本高于你手机or项目最高版本低于你手机) 解决方案三: 看下是版本问题吗?另外看下l

开发eclipse插件遇到一个问题

问题描述 开发eclipse插件遇到一个问题 我在开发一款eclipse插件,需要在package explorer.project explorer.navigator视图的右键菜单中添加一个菜单项,遇到一个问题是在package explorer和navigator视图中菜单项能显示出来并正常使用,但是在project explorer视图里却显示不出来.请问各位大神是什么原因? action类的定义: public class DfbdExportFileAction extends Ac

android开发eclipse导入design,运行时出错无法加载布局

问题描述 android开发eclipse导入design,运行时出错无法加载布局 xml代码如下 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support

android 布局-安卓开发 eclipse 计算器模型

问题描述 安卓开发 eclipse 计算器模型 怎么做在eclipse安卓 里制作一个计算器APP,在虚拟机里出现能实现加减乘除等简单的运算 解决方案 给你一个以前写好的,仅供参考 import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.text.DecimalFormat

Android开发进阶自定义控件之滑动开关实现方法【附demo源码下载】_Android

本文实例讲述了Android开发进阶自定义控件之滑动开关实现方法.分享给大家供大家参考,具体如下: 自定义开关控件 Android自定义控件一般有三种方式 1.继承Android固有的控件,在Android原生控件的基础上,进行添加功能和逻辑. 2.继承ViewGroup,这类自定义控件是可以往自己的布局里面添加其他的子控件的. 3.继承View,这类自定义控件没有跟原生的控件有太多的相似的地方,也不需要在自己的肚子里添加其他的子控件. ToggleView自定义开关控件表征上没有跟Androi

Android开发之自定义控件用法详解_Android

本文实例讲述了Android开发之自定义控件用法.分享给大家供大家参考,具体如下: 今天和大家分享下组合控件的使用.很多时候android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便的一个方法.今天就来介绍下如何使用组合控件,将通过两个实例来介绍. 第一个实现一个带图片和文字的按钮,如图所示: 整个过程可以分四步走.第一步,定义一个layout,实现按钮内部的布局.代码如下: custom_bu

android开发 eclipse alt+”/”自动提示失效的解决方法_Android

1.用于没有一点提示的情况:依次打开eclipse上面的windows --preferences --java --editor -- content assist ,在右上方有一行"select the proposal kinds contained in the 'default' content assist list" 下面,勾选Java Prolosals 复选框,保存退出即可. 开发 eclipse alt+/自动提示失效的解决方法_Android-eclipse al

开发Eclipse Web Service插件问题

问题描述 小弟新开发Eclipse插件,插件中需要调用jax-ws访问webservice.我用MyEclipse6.5自动生成访问webservice的客户端.通过代码this.wslibDelegate=newWebServiceSearchService().getWebServiceSearchPort();获得访问webserviceport的代理.我把界面程序独立运行为SWT程序或者Java程序时,一切都是正常的.但是当我通过下面代码将界面运行为Action插件的时候,就会阻塞在上面