用反射实现SWT里TableViewer的ITableLabelProvider接口

import java.lang.reflect.Field;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;

/**
* @author house
  *
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class TableViewerLabelProvider implements ITableLabelProvider {
/* (非 Javadoc)
  * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
  */
public Image getColumnImage(Object element, int columnIndex) {
  // TODO 自动生成方法存根
  return null;
}
/* (非 Javadoc)
  * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
  */
public String getColumnText(Object element, int columnIndex) {
  // TODO 自动生成方法存根

  Class pe = null;
  pe=element.getClass();
  Field[] field=pe.getFields();
  try {
  return field[columnIndex].get(element).toString();
  } catch (IllegalArgumentException e1) {
  // TODO 自动生成 catch 块
  e1.printStackTrace();
  } catch (IllegalAccessException e1) {
  // TODO 自动生成 catch 块
  e1.printStackTrace();
  }

 
// if(columnIndex==0){return p.getId().toString();}
// if(columnIndex==1){return p.getName();}
// if(columnIndex==2){return p.getSex()? "man":"woman";}
// if(columnIndex==3){return p.getDate().toString();}
return "";

}

/* (非 Javadoc)
  * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
  */
public void addListener(ILabelProviderListener listener) {
  // TODO 自动生成方法存根

}
/* (非 Javadoc)
  * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
  */
public void dispose() {
  // TODO 自动生成方法存根

}

/* (非 Javadoc)
  * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
  */
public boolean isLabelProperty(Object element, String property) {
  // TODO 自动生成方法存根
  return false;
}

/* (非 Javadoc)
  * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
  */
public void removeListener(ILabelProviderListener listener) {
  // TODO 自动生成方法存根

}
}

Class pe = null;
  pe=element.getClass();
  Field[] field=pe.getFields();
  return field[columnIndex].get(element).toString();
取代原有的// if(columnIndex==0){return p.getId().toString();}
// if(columnIndex==1){return p.getName();}
// if(columnIndex==2){return p.getSex()? "man":"woman";}
// if(columnIndex==3){return p.getDate().toString();}

当多个类进行调用时也不须修改此类。但应该注意视图应包括持久化类的全类字段。

时间: 2024-10-12 13:33:06

用反射实现SWT里TableViewer的ITableLabelProvider接口的相关文章

java-Java里重新封装的接口为什么会报错呢?

问题描述 Java里重新封装的接口为什么会报错呢? 小白一枚,在搞数据库这一块时,对数据的连接与操作想写个类封装进去,执行代码时,调用 ResultSet st=db.execQuery("select * from b.TAB_TRAN_LOG fetch first 10 rows only"); while(st.next()) { System.out.println(st.getString("Trn_CODE")); } 时就会报错,感觉是类的Resul

android 界面加载完-在Activity的onWindowFocusChanged方法里回调了实现接口的Fragment

问题描述 在Activity的onWindowFocusChanged方法里回调了实现接口的Fragment Android 界面加载完,在Activity的onWindowFocusChanged方法里回调了实现接口的Fragment,可是奇怪的Fragment里面的ListView的getCount为0,可界面已经显示了,希望前辈们指点! 解决方案 希望高手来救呀,希望高手来救呀

php利用反射真正实现多继承(非接口模拟)

昨天我在写PHP程序的时候,无意发现在PHP的::操作符非常强大,不仅仅是只用在访问parent,sel,静态成员属性.常量上面,其实他的功能强大了去了 . 这个符号在PHP中实际上叫做范围解析符,这是PHP官方的解释php.net/manual/zh/language.oop5.paamayim-nekudotayim.php.但是官方中文部分只是简单的介绍了 访问parent,sel,静态成员属性.常量的作用,而下面英文部分,可能由于咱们这些吊死对英文不好的缘故,就没看下去了,实现上,下面还

PHP反射ReflectionClass、ReflectionMethod 入门教程

PHP5 具有完整的反射API,添加对类.接口.函数.方法和扩展进行反向工程的能力. 反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类.方法.属性.参数等的详细信息,包括注释.这种动态获取的信息以及动态调用对 象的方法的功能称为反射API.反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用. 其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言. PHP反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的

C# 为什么要用反射,什么情况必须使用反射。

问题描述 DLL内容都了解的话,直接引用DLL不就好了吗,为什么还要反射.DLL里面的内容什么都不知道的话,就算反射的话,也不知道里面的方法是干什么的啊,和直接引用DLL没区别啊.有的说工厂模式动态加载DLL时需要用到反射如果我不用工厂模式,也不动态加载是不是就不需要使用了那. 解决方案 解决方案二:楼主你试试做个支持插件的应用程序解决方案三:动态加载dll调用方法解决方案四:引用楼主guanzijuan123的回复: DLL内容都了解的话,直接引用DLL不就好了吗,为什么还要反射.DLL里面的

谈谈Go语言的反射三定律_Golang

简介 Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型.它是元编程的一种形式,也是最容易让人迷惑的一部分. 虽然Go语言没有继承的概念,但为了便于理解,如果一个struct A 实现了 interface B的所有方法时,我们称之为"继承". 类型和接口 反射建立在类型系统之上,因此我们从类型基础知识说起. Go是静态类型语言.每个变量都有且只有一个静态类型,在编译时就已经确定.比如 int.float32.*MyType.[]byte. 如果我们做出

PHP的反射类ReflectionClass、ReflectionMethod使用实例_php实例

PHP5 具有完整的反射API,添加对类.接口.函数.方法和扩展进行反向工程的能力. 反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类.方法.属性.参数等的详细信息,包括注释.这种动态获取的信息以及动态调用对象的方法的功能称为反射API.反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用. 其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言. PHP反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注

ASP.NET 2.0 里输出文本格式流

asp.net 在用 ASP.NET 编程时,打开一个页面一般是通过指定超链接地址,调用指定的页面文件(.html..aspx)等方法. 但是,如果即将打开的页面文件的内容是在程序中动态生成,或者是从数据库的表里取出的,我们怎么把这些内容展示出来呢? 我们最直接的想法是,把这些内容先保存成网页文件,再调用它.这种方法当然是可以的,但不是最好的方法,因为这样会在 Web 服务器上生成 许多临时文件,这些文件可能永远也用不着了. 另一种最好的方法是利用文本格式流,把页面内容动态地展示出来.例如,有一

ASP.NET 2.0里输出文本格式流

在用 ASP.NET 编程时,打开一个页面一般是通过指定超链接地址,调用指定的页面文件(.html..aspx)等方法. 但是,如果即将打开的页面文件的内容是在程序中动态生成,或者是从数据库的表里取出的,我们怎么把这些内容展示出来呢? 我们最直接的想法是,把这些内容先保存成网页文件,再调用它.这种方法当然是可以的,但不是最好的方法,因为这样会在 Web 服务器上生成 许多临时文件,这些文件可能永远也用不着了. 另一种最好的方法是利用文本格式流,把页面内容动态地展示出来.例如,有一个页面: --