swt/jface第六天 table
重点内容:
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相关推荐
- SWT/JFACE表格Table可编辑
SWT/JFACE表格Table可编辑 2009-10-12 22:52 今天刚好遇到了这个问题写了个例子,. public class Test { public static String []N ...
- Swt/Jface中提供的dialog
Swt/Jface中提供的dialog Swt/Jface中提供了各种各样的Dialog,一般情况下就能满足我们的需求,现在把这些dialog介绍一下, 下一篇文章再继续将如何自定义Dialog 一. ...
- 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.下 ...
- 如何在Eclipse 3.6.2中安装swt/JFace
如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...
- swt/jface控件的隐藏与显示
swt/jface控件的隐藏与显示部分源代码: import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; ...
- java swt_JAVA从入门到精通:SWT(JFace)体验之ApplicationWindow
本文主要向大家介绍了JAVA从入门到精通的SWT(JFace)体验之ApplicationWindow,通过具体的代码向大家展示,希望对大家学习JAVA从入门到精通有所帮助. 测试代码如下: 复制代码 ...
- java swt button_JAVA.SWT/JFace: SWT基本组件之按钮(Button)
<Eclipse SWT/JFACE 核心应用> 清华大学出版社 5.2 按钮(Button) 按钮有普通按钮(SWT.PUSH).单选按钮(SWT.RADIO).多选按钮(SWT.CHE ...
- java swt 布局管理器_JAVA.SWT/JFace: SWT布局管理器
7.1 布局管理器概述 FillLayout(充满式布局):在单行或单列中放置相同大小的控件,是最简单的布局. RowLayout(行列式布局):在单行或者多行中放置控件,应用了fill.wrap和s ...
- SWT/JFace 同一个Label组件中显示不同的字体和字体颜色
做Eclipse插件开发中,有时候需要高亮或者突出一个label中某个字,方式如下: package com.devin.eclipse.TextStyleDemo;import org.eclips ...
- [Eclipse插件开发-001] SWT/JFACE布局入门总结
=============SWT布局管理器入门总结======================= 绝对定位: * setBounds(int x, int y, int width, int heig ...
最新文章
- 多个模型在测试集上的Accuracy以及AUC指标可视化对比实战
- Kubernetes学习笔记---常用命令
- QQ使用了什么通讯协议?为什么要这样做?为什么采用 UDP 协议,而不采用 TCP 协议实现?
- 计算机视觉与模式识别国际期刊整理
- H5学习从0到1-H5的元素属性(3)
- Dockerfile和Dockerfile-dev
- Android应用开发(7)---Unicode和国际化支持
- hive sql 报错后继续执行_Hive迁移Presto在OPPO的实践
- sublime3dsmax - Sublime Text Send To 3ds Max 解决中文路径问题
- PS 前端技能一 白色背景图片变为透明的图片
- AIME数学竞赛信息大全
- qq邮箱显示服务器连接错误,为什么我的QQ邮箱显示网络错误
- 数学笔记13——定积分
- python新年贺卡_写个新年贺卡生成器,各位小伙伴们新年快乐呀~
- 为什么要学习Linux?
- 自制IDEAWebStorm主题,轻仿VsCode-One Dark Pro
- android setting之Settings.system设置
- Android11 Launcher添加网格布局设置(3x3,4x4,5x5)
- 一起来“泡博”[--老沙]
- 【进阶实战】使用PaddlePaddle测试土壤有机质预测含氮量
热门文章
- jq向php文件传json,jQuery向后台传入json格式数据的方法
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_07-新增页面-前端-页面完善...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1、SpringBoot2.x课程介绍和高手系列知识点...
- 【Flask】通过Flask_login实现用户登录
- 存管 托管 监管 区别
- 用Gradle 构建你的android程序
- 利用WCF与Android实现图片上传并传参
- 转的一个itoa实现(效率很高,并且能够正确处理INT_MIN)
- HTTP-meta标签