重点内容:
   tableViewer
内容:
   创建tableviewer
   三种构造方法:
     1。TableViewer(Composite parent)
     2.TableViewer(Composite parent,int style);
     3.TableViewer(Table table)
 通过table.getTable()可以获得Table对象
 TableViewer将组织和显示的数据交给了两个接口,
           IcontentProvider  : 负责将SETinput方法传入的对象转成表格所需要的对象。
                    |--  IStructuredContentProvider
            IBaseLabelProvider
       |--ITableLabelProvider:负责处理表如如保显示数.

一般步骤:
               // 创建TableView
  table = new TableViewer(parent, SWT.FULL_SELECTION);
  // 创建表头
  for (int i = 0; i < COLUMN_NAME.length; i++) {
   new TableColumn(table.getTable(), SWT.LEFT).setText(COLUMN_NAME[i]);
   table.getTable().getColumn(i).pack();
  }
  // 设置表头与表格线可见
  table.getTable().setHeaderVisible(true);
  table.getTable().setLinesVisible(true);
  // 设置视图
  table.setContentProvider(new MyContentProvider());

table.setLabelProvider(new MylabelProvider());
  //
  table.setInput(persons);

加菜单时易错地方:
private Menu md;  //要定义全局变量
private TableViewer table;  //目标表格。action初始化要用。
private List persons;  //表格结构实数据.
//PersonEO person = (PersonEO) element;实体结构类
//下面生成菜单
    private void createContextMenu(Composite parent) {
  MenuManager menuManager = new MenuManager();
  menuManager.add(new addAction(table));
  menuManager.add(new DelAction(table));
  md = menuManager.createContextMenu(parent);
  table.getTable().setMenu(md);
 }
  protected Control createContents(Composite parent) {
  // 创建TableView
  table = new TableViewer(parent, SWT.FULL_SELECTION);
  // 创建表头
  for (int i = 0; i < COLUMN_NAME.length; i++) {
   new TableColumn(table.getTable(), SWT.LEFT).setText(COLUMN_NAME[i]);
   table.getTable().getColumn(i).pack();
  }
  // 设置表头与表格线可见
  table.getTable().setHeaderVisible(true);
  table.getTable().setLinesVisible(true);
  // 设置视图
  table.setContentProvider(new MyContentProvider());

table.setLabelProvider(new MylabelProvider());
  //
  table.setInput(persons);
  table.addDoubleClickListener(new IDoubleClickListener() {
   public void doubleClick(DoubleClickEvent event) {
    StructuredSelection selection = (StructuredSelection) event
      .getSelection();
    PersonEO personEO = (PersonEO) selection.getFirstElement();
    MessageBox mb = new MessageBox(getShell(), SWT.YES);
    mb.setMessage(personEO.getName().toString());
    mb.open();
   }
  });

createContextMenu(parent);  //这句很重要,
  return parent;

}
Action操作注意:
      要把上面主程中的TABLE传入action操作:

public class addAction extends Action {
 TableViewer table; //接收目标table

public addAction(TableViewer table) {
  this.table = table;
  setText("新建");

}

@Override
 public void run() {
  PersonEO personEO = new PersonEO();
  personEO.setId(table.getTable().getItemCount() + 1);
  personEO.setName("keim");
  personEO.setGender("女");
  personEO.setColor("红色");
  table.add(personEO);
 }

}

主程式代码:

package com.cmo.mes.table;

import java.awt.Dialog;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableColumn;

public class TableWindow extends ApplicationWindow {
 private Menu md;
 private TableViewer table;
 private List persons;
 public static final int ID = 0;
 public static final int NAME = 1;
 public static final int GENDER = 2;
 public static final int COLOR = 3;

public static final String[] COLUMN_NAME = { "ID号", "姓名", "性别", "COLOR" };

public TableWindow() {
  super(null);
  initPersons();
  // TODO Auto-generated constructor stub
 }

private void initPersons() {
  persons = new ArrayList();
  persons.add(new PersonEO(1, "ZQM", "男", "灰色"));
  persons.add(new PersonEO(2, "cxh", "男", "灰色"));

}

@Override
 protected void configureShell(Shell shell) {
  // TODO Auto-generated method stub
  super.configureShell(shell);
  shell.setSize(300, 200);
  shell.setText("table view 程序示列");
 }

protected Control createContents(Composite parent) {
  // 创建TableView
  table = new TableViewer(parent, SWT.FULL_SELECTION);
  // 创建表头
  for (int i = 0; i < COLUMN_NAME.length; i++) {
   new TableColumn(table.getTable(), SWT.LEFT).setText(COLUMN_NAME[i]);
   table.getTable().getColumn(i).pack();
  }
  // 设置表头与表格线可见
  table.getTable().setHeaderVisible(true);
  table.getTable().setLinesVisible(true);
  // 设置视图
  table.setContentProvider(new MyContentProvider());

table.setLabelProvider(new MylabelProvider());
  //
  table.setInput(persons);
  table.addDoubleClickListener(new IDoubleClickListener() {
   public void doubleClick(DoubleClickEvent event) {
    StructuredSelection selection = (StructuredSelection) event
      .getSelection();
    PersonEO personEO = (PersonEO) selection.getFirstElement();
    MessageBox mb = new MessageBox(getShell(), SWT.YES);
    mb.setMessage(personEO.getName().toString());
    mb.open();
   }
  });

createContextMenu(parent);
  return parent;

}

private void createContextMenu(Composite parent) {
  MenuManager menuManager = new MenuManager();
  menuManager.add(new addAction(table));
  menuManager.add(new DelAction(table));
  md = menuManager.createContextMenu(parent);
  table.getTable().setMenu(md);
 }

public static void main(String[] args) {
  TableWindow test = new TableWindow();

test.setBlockOnOpen(true);
  test.open();

Display.getCurrent().dispose();

}

}

自定义类MylabelProvider :

package com.cmo.mes.table;

import java.util.List;

import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;

import com.cmo.mes.table.TableWindow;
import com.sun.org.apache.bcel.internal.generic.RETURN;

public class MylabelProvider implements ITableLabelProvider {

@Override
 public Image getColumnImage(Object element, int columnIndex) {
  return null;
 }

@Override
 public String getColumnText(Object element, int columnIndex) {
  PersonEO person = (PersonEO) element;
  if (columnIndex == TableWindow.ID) {
   return person.getId() + "";
  } else if (columnIndex == TableWindow.NAME) {
   return person.getName();
  } else if (columnIndex == TableWindow.COLOR) {
   return person.getColor();
  } else if (columnIndex == TableWindow.GENDER) {
   return person.getGender();
  } else {
   return "";
  }

}

@Override
 public void addListener(ILabelProviderListener listener) {
  // TODO Auto-generated method stub

}

@Override
 public void dispose() {
  // TODO Auto-generated method stub

}

@Override
 public boolean isLabelProperty(Object element, String property) {
  // TODO Auto-generated method stub
  return false;
 }

@Override
 public void removeListener(ILabelProviderListener listener) {
  // TODO Auto-generated method stub

}

}

自定义类MyContentProvider :

package com.cmo.mes.table;

import java.util.List;

import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;

public class MyContentProvider implements IStructuredContentProvider {

@Override
 // 将初始化数据的入口对象转换成表格使用的数组对象
 public Object[] getElements(Object inputElement) {
  // TODO Auto-generated method stub

return ((List) inputElement).toArray();
 }

@Override
 // 释放该对象
 public void dispose() {
  // TODO Auto-generated method stub

}

@Override
 // 当表格中有数据改变时调用 该方法。
 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  // TODO Auto-generated method stub

}

}

add action 代码:

package com.cmo.mes.table;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Table;

public class addAction extends Action {
 TableViewer table;

public addAction(TableViewer table) {
  this.table = table;
  setText("新建");

}

@Override
 public void run() {
  PersonEO personEO = new PersonEO();
  personEO.setId(table.getTable().getItemCount() + 1);
  personEO.setName("keim");
  personEO.setGender("女");
  personEO.setColor("红色");
  table.add(personEO);
 }

}

deleteaction 代码:

package com.cmo.mes.table;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.events.HelpListener;
import org.eclipse.swt.widgets.Event;

public class DelAction extends Action {
 TableViewer table;

public DelAction(TableViewer table) {
  setText("删除");
  this.table = table;
 }

@Override
 public void run() {
  StructuredSelection selctioSelection = (StructuredSelection) table
    .getSelection();
  PersonEO personEO = (PersonEO) selctioSelection.getFirstElement();
  table.remove(personEO);

}
}

实体类:

package com.cmo.mes.table;

public class PersonEO {
 private int id;
 private String name;
 private String gender;

public int getId() {
  return id;
 }

public void setId(int id) {
  this.id = id;
 }

public String getName() {
  return name;
 }

public void setName(String name) {
  this.name = name;
 }

public String getGender() {
  return gender;
 }

public void setGender(String gender) {
  this.gender = gender;
 }

public String getColor() {
  return color;
 }

public void setColor(String color) {
  this.color = color;
 }

private String color;

public PersonEO(int id, String name, String gender, String color) {
  super();
  this.id = id;
  this.name = name;
  this.gender = gender;
  this.color = color;
 }

public PersonEO() {
  super();
 }

}

转载于:https://www.cnblogs.com/zqmingok/archive/2010/08/23/1806817.html

swt/jface第六天 table相关推荐

  1. SWT/JFACE表格Table可编辑

    SWT/JFACE表格Table可编辑 2009-10-12 22:52 今天刚好遇到了这个问题写了个例子,. public class Test { public static String []N ...

  2. Swt/Jface中提供的dialog

    Swt/Jface中提供的dialog Swt/Jface中提供了各种各样的Dialog,一般情况下就能满足我们的需求,现在把这些dialog介绍一下, 下一篇文章再继续将如何自定义Dialog 一. ...

  3. Eclipse 3.7 3.x SWT/Jface 开发环境搭建

    Eclipse 3.7 3.x SWT/Jface 开发环境搭建 原文http://blog.csdn.net/kimsoft/article/details/7239651 1.准备工作 1.1.下 ...

  4. 如何在Eclipse 3.6.2中安装swt/JFace

    如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...

  5. swt/jface控件的隐藏与显示

    swt/jface控件的隐藏与显示部分源代码: import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; ...

  6. java swt_JAVA从入门到精通:SWT(JFace)体验之ApplicationWindow

    本文主要向大家介绍了JAVA从入门到精通的SWT(JFace)体验之ApplicationWindow,通过具体的代码向大家展示,希望对大家学习JAVA从入门到精通有所帮助. 测试代码如下: 复制代码 ...

  7. java swt button_JAVA.SWT/JFace: SWT基本组件之按钮(Button)

    <Eclipse SWT/JFACE 核心应用> 清华大学出版社 5.2 按钮(Button) 按钮有普通按钮(SWT.PUSH).单选按钮(SWT.RADIO).多选按钮(SWT.CHE ...

  8. java swt 布局管理器_JAVA.SWT/JFace: SWT布局管理器

    7.1 布局管理器概述 FillLayout(充满式布局):在单行或单列中放置相同大小的控件,是最简单的布局. RowLayout(行列式布局):在单行或者多行中放置控件,应用了fill.wrap和s ...

  9. SWT/JFace 同一个Label组件中显示不同的字体和字体颜色

    做Eclipse插件开发中,有时候需要高亮或者突出一个label中某个字,方式如下: package com.devin.eclipse.TextStyleDemo;import org.eclips ...

  10. [Eclipse插件开发-001] SWT/JFACE布局入门总结

    =============SWT布局管理器入门总结======================= 绝对定位: * setBounds(int x, int y, int width, int heig ...

最新文章

  1. 多个模型在测试集上的Accuracy以及AUC指标可视化对比实战
  2. Kubernetes学习笔记---常用命令
  3. QQ使用了什么通讯协议?为什么要这样做?为什么采用 UDP 协议,而不采用 TCP 协议实现?
  4. 计算机视觉与模式识别国际期刊整理
  5. H5学习从0到1-H5的元素属性(3)
  6. Dockerfile和Dockerfile-dev
  7. Android应用开发(7)---Unicode和国际化支持
  8. hive sql 报错后继续执行_Hive迁移Presto在OPPO的实践
  9. sublime3dsmax - Sublime Text Send To 3ds Max 解决中文路径问题
  10. PS 前端技能一 白色背景图片变为透明的图片
  11. AIME数学竞赛信息大全
  12. qq邮箱显示服务器连接错误,为什么我的QQ邮箱显示网络错误
  13. 数学笔记13——定积分
  14. python新年贺卡_写个新年贺卡生成器,各位小伙伴们新年快乐呀~
  15. 为什么要学习Linux?
  16. 自制IDEAWebStorm主题,轻仿VsCode-One Dark Pro
  17. android setting之Settings.system设置
  18. Android11 Launcher添加网格布局设置(3x3,4x4,5x5)
  19. 一起来“泡博”[--老沙]
  20. 【进阶实战】使用PaddlePaddle测试土壤有机质预测含氮量

热门文章

  1. jq向php文件传json,jQuery向后台传入json格式数据的方法
  2. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_07-新增页面-前端-页面完善...
  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计...
  4. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1、SpringBoot2.x课程介绍和高手系列知识点...
  5. 【Flask】通过Flask_login实现用户登录
  6. 存管 托管 监管 区别
  7. 用Gradle 构建你的android程序
  8. 利用WCF与Android实现图片上传并传参
  9. 转的一个itoa实现(效率很高,并且能够正确处理INT_MIN)
  10. HTTP-meta标签