GWT内部提供了CellTable组件,它允许自由增加column以及cell,在设定column之后就是在其中填充cell了。但GWT所提供的CellTable样式确实不敢恭维,为了解决这一问题,在网上找了一些可行的方法,结合我的实践,在此贴出代码及说明,以供参考。

  创建column代码:

protected Column<Item, String> createNameColumn(CellTable<Item> parent) {

    Column<Item,String> column = new Column<Item,String>(new MytextCell()) {

        public String getCellStyleNames(Context context,
EntityItem<Product> object) {
return "label_link_focus_style";
} public String getValue(item) {
//code here
}
};

上面的代码中,我使用的是一个MyTextCell,一个我自定义的textCell,它继承于TextCell,所以重写了textCell中的getCellStyleNames()方法,只需要要返回一个css中的class名称字符串即可。这样做可以改变该cell的样式,但有一个缺点,不够灵活,仅仅改变cell样式,cell里面的内容不能改变。比如我想给cell中的字体加个下划线或者改个颜色,这种方法就不能完全实现。

看看MytextCell类的代码:

 public class MyTextCell extends TextCell {

       private static Template template;

      interface Template extends SafeHtmlTemplates {
@Template("<div style=\"color:{0};text-decoration:{1}\">{2}</div>")
SafeHtml div(String url, String decoration, String value);
} @Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
String color = "#0066DD";
String decoration = "underline";
if (value != null) {
sb.append(template.div(color, decoration, value));
}
}
}

在该类中,我重写了TextCell中的render()方法,通过该方法,给cell中的内容添加样式。首先定义一个静态的Template接口,我称它为模板,这个Template继承与SaftHtmlTemplates。然后在其接口中通过注解定义模板样式以及调用格式,如6、7行所示写法。其中的模板中存在{0}、{1}这样的形式,有些类似于一种占位符。

接着在render()方法中调用刚才定义的接口,并将占位符填上你希望实现的css样式即可。这样就能轻松更改cell里面的内容的样式了!

GWT中自定义你的"cell"的更多相关文章

  1. ios中自定义cell 设置cell的分组结构

    ios系统默认的cell并不能满足我们的需求 这个时候就需要自定义我们的cell 自定义cell为分组的时候 需要设置分组样式  以下是我常用分组的二种方法: 第一是 在自定义的UITableView ...

  2. ios之UI中自定义cell

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  3. 自定义不等高cell—storyBoard或xib自定义不等高cell

    1.iOS8之后利用storyBoard或者xib自定义不等高cell: 对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView(cell的content ...

  4. 纯代码自定义不等高cell

    数据模型.plist解析这里就不过多赘述. 错误思路之一: 通过在heightForRowAtIndexPath:方法中调用cellForRowAtIndexPath:拿到cell,再拿到cell的子 ...

  5. iOS开发——UI进阶篇(三)自定义不等高cell,如何拿到cell的行高,自动计算cell高度,(有配图,无配图)微博案例

    一.纯代码自定义不等高cell 废话不多说,直接来看下面这个例子先来看下微博的最终效果 首先创建一个继承UITableViewController的控制器@interface ViewControll ...

  6. iOS开发——UI进阶篇(二)自定义等高cell,xib自定义等高的cell,Autolayout布局子控件,团购案例

    一.纯代码自定义等高cell 首先创建一个继承UITableViewCell的类@interface XMGTgCell : UITableViewCell在该类中依次做一下操作1.添加子控件 - ( ...

  7. Html中自定义鼠标的形状

    Html中自定义鼠标的形状 <html> <head> <title>自定义的鼠标形状</title> <meta http-equiv=&quo ...

  8. 教你一招:在PowerPoint中自定义可输入文本的占位符

    日常生活中,当我们设计多媒体课件时,默认的版式其实已经够用了.但是,很多时候,我们需要更加个性一点,所以,我们需要自定义很多东西.本文介绍在PowerPoint中自定义可输入文本的占位符. 一.占位符 ...

  9. android代码优化----ListView中自定义adapter的封装(ListView的模板写法)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. 在各种Linux发行版上安装Git的教程

    Git是一个流行的开源版本控制系统(VCS),最初是为Linux环境开发的.跟CVS或者SVN这些版本控制系统不同的是,Git的版本控制被认为是“分布式的”,某种意义上,git的本地工作目录可以作为一 ...

  2. vRA7 Software Component

    将自定义Property传递给Software Component 示例: vRA7 支持 Software Components,并且还可以在用户的申请页面中,做一个下拉菜单,让用户选择需要安装的S ...

  3. Windows Server 2008 IIS的备份和还原

    Windows Server 2008 IIS的备份和还原 当我们服务器系统有大量的站点和虚拟目录的时候,因为种种原因需要重做系统,那么重装系统后这些站点我们是否只能一个一个的添加,如果有成百上千个站 ...

  4. java中如何将非整数保留到小数点后指定的位数

  5. Oracle数据库连接生成DDL

    package com.bbkj; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepare ...

  6. js用星号隐藏电话中间四位号码

    $(document).ready(function(){ var mobile="{$user.mobile}"; var reg=/^(\d{3})\d{4}(\d{4})$/ ...

  7. JAVA 中的集合框架

    java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 一.集合与数组 数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知 ...

  8. Java 创建线程的两种方法

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  9. OpenStack with Opendaylight Part 1: Intro to Pipeline

    Using Vagrant to create vm nodes; devstack to start openstack using Opendaylight as ML2. Openstack w ...

  10. windows下如何查看端口占用

    1.查看端口使用情况netstat -aon(以3306为例) 2.根据3306端口号查看对应的进程号(进程号就是进程的唯一标识,根据这个进程号就能找到对应的应用) 3.根据进程号查询相应的应用占用端 ...