» 网友学堂 » JAVA教程 » 用反射实现SWT里TableViewer的ITableLabelProvider接口
用反射实现SWT里TableViewer的ITableLabelProvider接口
作者:ljjk5 发表时间:2007-12-28 18:27 阅读:117次 在百度搜索相关内容

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 (IllegalAcces*ception e1) {
  // TODO 自动生成 catch 块
  e1.printStackTrace();
  }

 
// if(columnIndex==0){return p.getId().toString();}
// if(columnIndex==1){return p.getName();}
// if(columnIndex==2){return p.get*()? "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.get*()? "man":"woman";}
// if(columnIndex==3){return p.getDate().toString();}

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

#Advertisement