读书人

gwt 兑现界面模式之 quot;Extras on Deman

发布时间: 2012-11-23 00:03:43 作者: rapoo

gwt 实现界面模式之 "Extras on Demand"

GWT 是一个强大的工具, 一旦定义好html结构和css之后,使用gwt提供的组件模型,可以将任意结构的html+css封装成为组件,并在java 语言中以组件的方式操作.GWT 1.6 增加了新的事件系统(原有的事件api可能会在将来删除), 更使得在dom或者现有的组件之上扩展开发相当容易.下面将以一个例子说明如何使用新的事件模型扩展现有组件.

(使用最新的 gwt 1.6.4 )

?

目标:


gwt 兑现界面模式之

如上, 在google 财经中有一个最近查询的股票列表,当鼠标在上面移动时,仅有当前行的操作(删除)出现,这有点类似界面模式中的"Extras on Demand". 我们的目标就是要在gwt 中实现类似的特性..

解决方案

相比较自己完全从html结构开始做起,如果能够在一个现有的组件之上进行开发,会减轻不少工作量,gwt 中提供了很多灵活,强大的组件.FlexTable 就是其中之一.FlextTable 很适合数据量不大的少量表格数据显示.也适合作为灵活的布局容器,如果需要显示大量数据,可以考虑 gwt incubator 中的 PagingScrollTable.

实现以上特性的关键是要能捕获鼠标移动事件(MouserMoveEvent), 并处理. FlexTable 支持ClickEvent, 并且可以使用 getCellForEvent 方法获得事件发生时的单元格对象,进而获得所在行. 当并不支持MouseMoveEvent. 所以首先我们需要从FlexTable 继承,并增加MouseMoveEvent 的事件支持.

完整的代码如下:

java module file:

?css:

.main{    margin-left:5em;    margin-right:5em;}#mouse_move{    margin-top:1em;}.delControl{    padding:1px 5px;    border:1px solid #aaaaaa;    cursor:pointer;}.testTable{    cursor:default;}.testTable .current{    background-color:#eeeeee;}.testTable .title{    background-color:#E5ECF9;}.testTable .data{    height:30px;}.testTable .name{    width:100px;}.testTable .price{    width:80px;}.testTable .updown{    width:150px;}
?

?

?

?

?

?

?

?

1 楼 edokeh 2009-05-25 gwt官方博客里面最近有篇文章讲到自定义控件的最佳实践,它不建议继承gwt自带的UI类,而建议用聚合的方式来做 2 楼 duker 2009-05-29 哦, 给个链接,看看..

读书人网 >Web前端

热点推荐