`
aijuans8
  • 浏览: 187236 次
社区版块
存档分类
最新评论

TableViewer

    博客分类:
  • java
阅读更多

import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableColumn;


import com.huawei.jface.po.Person;


public class MainWindow extends ApplicationWindow{

private TableViewer tableViewer;

private List<Person> personList;

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号","姓名","性别","喜爱颜色"};



public MainWindow() {
super(null);
// TODO Auto-generated constructor stub
initData();
this.addMenuBar();
this.addStatusLine();
}
private void initData() {
personList = new ArrayList<Person>();
personList.add(new Person(1, "张三", "男", "灰色"));
personList.add(new Person(2, "李四", "女", "红色"));
personList.add(new Person(3, "香香", "女", "白色"));
}
@Override
protected void configureShell(Shell shell) {
// TODO Auto-generated method stub
super.configureShell(shell);
shell.setImage(new Image(shell.getDisplay(), "main_title.jpg"));
shell.setText("TableViewer事例");
int screenW = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenH = Toolkit.getDefaultToolkit().getScreenSize().height;
shell.setSize(500, 300);
int shellW = shell.getBounds().width;
int shellH = shell.getBounds().height;
if(shellW>screenW){
shellW=screenW;
}
if(shellH>screenH){
shellH=screenH;
}
shell.setLocation((screenW-shellW)/2, (screenH-shellH)/2);

}

@Override
protected Control createContents(Composite parent) {
// parent.setLayout(new RowLayout(SWT.VERTICAL));
// Text text = new Text(parent,SWT.BORDER|SWT.MULTI|SWT.V_SCROLL);
// RowData data = new RowData();
// data.width = 450;
// data.height=100;
// text.setLayoutData(data);
//创建TableViewer对象
tableViewer = new TableViewer(parent,SWT.FULL_SELECTION|SWT.CENTER);
//创建表头
for(int i=0;i<COLUMN_NAME.length;i++){
TableColumn tableColumn = new TableColumn(tableViewer.getTable(), SWT.LEFT);
tableColumn.setText(COLUMN_NAME[i]);
tableViewer.getTable().getColumn(i).pack();
}
//设置表头和表格线可见
tableViewer.getTable().setHeaderVisible(true);
tableViewer.getTable().setLinesVisible(true);
//将list转换为array
tableViewer.setContentProvider(new TableContentProvider());
//对每列数据进行数据类型转换
tableViewer.setLabelProvider(new TableLableProvider());
tableViewer.setInput(personList);
createContextMenu();
editorTableViewer();
return parent;
}


private void editorTableViewer() {
// 设置列属性
tableViewer.setColumnProperties(COLUMN_NAME);
// 设置单元格编辑器对象数组
CellEditor[] cellEditors = new CellEditor[4];
cellEditors[0] = null;
cellEditors[1] = new TextCellEditor(tableViewer.getTable());
cellEditors[2] = new TextCellEditor(tableViewer.getTable());
cellEditors[3] = new TextCellEditor(tableViewer.getTable());
//设置单元格编辑器
tableViewer.setCellEditors(cellEditors);

//设置单元格修改器
tableViewer.setCellModifier(new ICellModifier() {

@Override
public void modify(Object element, String property, Object value) {
if(element instanceof Item){
element=((Item)element).getData();
Person person=(Person)element;
if(property.equals(COLUMN_NAME[1])){
person.setName((String)value);
}else  if(property.equals(COLUMN_NAME[2])){
person.setGender((String)value);
}else if(property.equals(COLUMN_NAME[3])){
person.setColor((String)value);
}
tableViewer.refresh();
}


}

//当处于编辑状态时所显示的值
public Object getValue(Object element, String property) {
Person person =(Person)element;
if(property.equals(COLUMN_NAME[1])){
return person.getName();
}else if(property.equals(COLUMN_NAME[2])){
return person.getGender();
}else if(property.equals(COLUMN_NAME[3])){
return person.getColor();
}
return null;
}

//如果是第一列,不能编辑
public boolean canModify(Object element, String property) {
if(property.equals(COLUMN_NAME[0])){
return false;
}
return true;
}
});
}




class TableContentProvider 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 arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub

}

}

class TableLableProvider implements ITableLabelProvider{


@Override
public Image getColumnImage(Object arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}


@Override
public String getColumnText(Object element, int columnIndex) {
// TODO Auto-generated method stub
Person person =(Person)element;
if(columnIndex == ID){
return person.getID()+"";
}else if(columnIndex == NAME){
return person.getName();
}else if(columnIndex == GENDER){
return person.getGender();
}else if(columnIndex ==COLOR){
return person.getColor();
}
return "";
}


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

}


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

}


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


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

}

}

class AddAction extends Action{
 
public AddAction(){
setText("添加");
}

@Override
public void run() {
Person person = new Person();
person.setID(tableViewer.getTable().getItemCount()+1);
person.setName("蒙蒙");
person.setGender("女");
person.setColor("黄色");
tableViewer.add(person);
}
}

class DeleteAction extends Action{
public DeleteAction(){
setText("删除");
}

@Override
public void run() {
StructuredSelection selection = (StructuredSelection)tableViewer.getSelection();
Person person=(Person)selection.getFirstElement();
getStatusLineManager().setMessage(person.getName()+" "+person.getGender()+" "+person.getColor());
tableViewer.remove(person);
}
}

class Refresh extends Action{
public Refresh(){
setText("刷新");
}
@Override
public void run() {
tableViewer.refresh();
}
}


public void createContextMenu(){
MenuManager menuBar = new MenuManager();
menuBar.add(new AddAction());
menuBar.add(new DeleteAction());
menuBar.add(new Refresh());
Menu menu =menuBar.createContextMenu(getShell());
tableViewer.getTable().setMenu(menu);
}


@Override
protected MenuManager createMenuManager() {
MenuManager menuBar = new MenuManager();
MenuManager editorMenu = new MenuManager("编辑(&E)");
menuBar.add(editorMenu);
editorMenu.add(new AddAction());
editorMenu.add(new DeleteAction());
return menuBar;
}

@Override
protected StatusLineManager getStatusLineManager() {
// TODO Auto-generated method stub
return super.getStatusLineManager();
}


@Override
protected StatusLineManager createStatusLineManager() {
StatusLineManager statusLineManager =new StatusLineManager();
return statusLineManager;
}

public static void main(String[] args) {
MainWindow main = new MainWindow();
main.setBlockOnOpen(true);
main.open();
Display.getCurrent().dispose();
}


}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package com.huawei.jface.po;


public class Person {
private int ID;
private String name;
private String gender;
private String color;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(int iD, String name, String gender, String color) {
super();
ID = iD;
this.name = name;
this.gender = gender;
this.color = color;
}
public int getID() {
return ID;
}
public void setID(int iD) {
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;
}


}

分享到:
评论

相关推荐

    Swt/Jface tableViewer入门教程一(显示tableViewer)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`tableViewer`组件来创建一个基本的表格视图。Swt(Standard Widget Toolkit)是Java中用于开发原生界面的应用程序开发工具包,而Jface是建立在Swt之上的抽象层,...

    Set TableViewer Cell Focus

    在IT领域,特别是Java Swing和Eclipse RCP开发中,TableViewer是经常被用来展示数据的一个组件。"Set TableViewer Cell Focus"这个话题是关于如何在TableViewer中设置焦点到特定单元格上,这对于实现用户交互和数据...

    JFace TableViewer的单元格逐个遍历的辅助类

    点击Enter键,对TableViewer的单元格进行逐个遍历的辅助类,推荐用于使用ViewerColumn.setEditingSupport的可编辑TableViewer。 Since 3.3, an alternative API is available, see ViewerColumn.setEditingSupport...

    swt/jface tableViewer开发简化

    本篇文章将聚焦于SWT/JFace中的tableViewer组件的开发与简化。 首先,`tableViewer`是JFace库中用于展示表格数据的核心组件。它为开发者提供了一种方便的方式来显示和操作数据,同时处理了诸如排序、过滤等复杂功能...

    SWT中自己订制了一个TableViewer(用于我的列出项目中的所有错误信息),作为测试用的。与大家分享

    本篇文章将重点讲解如何在SWT中自定义TableViewer,以便展示项目中的所有错误信息,这对于调试和问题排查至关重要。 TableViewer是SWT JFace库中的一个组件,它为 SWT 的 Table 控件提供了一种数据绑定和视图操作的...

    Swt/Jface tableViewer入门教程三(加入在表格上直接编辑数据)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...

    tableviewer edit

    在 Eclipse RCP(Rich Client Platform)开发中,`TableViewer` 是一个强大的组件,用于展示数据表。`TableViewer` 是 `JFace` 库的一部分,它提供了与 SWT(Standard Widget Toolkit)表格控件的高级接口,使得数据...

    TableViewer示例

    【TableViewer示例】——全面探索TableViewer的使用 在Java SWT(Standard Widget Toolkit)库中,TableViewer是一个强大的组件,用于在用户界面中展示表格数据。它提供了丰富的功能,如排序、过滤、编辑和自定义列...

    Tableviewer实现

    在Java开发领域,尤其是涉及到Swing或Eclipse RCP( Rich Client Platform)应用程序时,`TableViewer`是一个非常重要的组件。它允许开发者在用户界面中展示表格数据,并提供了丰富的功能来处理这些数据。本篇文章将...

    TableViewer单元格编辑功能

    Jface TableViewer控件实现的对标签文件的标签属性的修改功能。 用TextCellEditor和ComboBoxCellEditor给表格添加编辑功能。 通过表格的addListener事件为表格的单元格添加编辑功能,事例根据鼠标点击时鼠标的X和Y...

    RCP开发之TableViewer 列的显示与隐藏

    RCP开发比Table更高级的TableViewer的使用。实现列的隐藏与显示

    带有翻页功能的TableViewer.rar

    在Java开发领域,TableViewer是SWT(Standard Widget Toolkit)库中的一个重要组件,常用于创建类似于电子表格的数据展示界面。这个“带有翻页功能的TableViewer.rar”文件可能包含了一个示例项目,演示如何在...

    Setting focus cell in TableViewer

    标题“Setting focus cell in TableViewer”涉及到的是在Eclipse RCP(Rich Client Platform)开发中,如何在TableViewer组件中设置焦点单元格。TableViewer是Eclipse JFace库中的一个关键组件,用于显示和操作表格...

    Plugins-JFace-TableViewer.rar

    Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar

    TableViewer学习源码

    虽然文件名字起得很笼统 里面只有一个关于TableViewer的项目源码 源码的依据是我转载的一篇学习TableViewer的博客源码 http://blog.csdn.net/weiweiwei256/article/details/49514699

    Eclipse从入门到精通2

    ### Eclipse从入门到精通2 —— JFace TableViewer详解 #### 概述 本文档针对CSDN上《Eclipse从入门到精通2》一书的部分更新内容进行了整合,主要聚焦于Eclipse环境下JFace框架的TableViewer组件的深入解析。...

    阿里大数据计算服务MaxCompute-安全指南.pdf

    例如,项目空间管理员可以创建一个名为tableviewer的角色,并将用户Alice、Bob和Charlie添加到该角色中: use prj1; create role tableviewer; grant List, CreateInstance on project prj1 to role tableviewer; ...

    Eclipse下SWT图形界面开发指南(1)

    TableViewer tableViewer = new TableViewer(parent, SWT.BORDER | SWT.MULTI); ``` 2. **实现 TableContentProvider**:实现 `TableContentProvider` 接口来提供表格的数据源。 3. **实现 TableLabelProvider**...

    swt_jface_celleditor

    `swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的TableViewer组件实现单元格的编辑功能,包括Text、Combo以及FileDialog这三种不同的编辑样式。 首先,SWT是Eclipse项目的一部分,它...

    jface 入门例子

    TableViewer tableViewer = new TableViewer(table); tableViewer.setContentProvider(new ArrayContentProvider()); tableViewer.setLabelProvider(new ColumnLabelProvider()); tableViewer.setInput(data...

Global site tag (gtag.js) - Google Analytics