- 浏览: 187236 次
最新评论
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;
}
}
发表评论
-
java例程练习(关于重写[overwrite/override])
2012-04-21 22:05 1342public class Test { ... -
extjs 验证消息不显示
2012-04-21 22:05 1009var linkId=this.myform.f ... -
单链表中结点的个数
2012-04-21 22:04 2190// 求单链表中结点的个数 unsigned int ... -
一个关于递归的示例
2012-04-20 21:19 1006using System; using System. ... -
Java线程(八):Condition-线程通信更高效的方式
2012-04-20 21:16 840接近一周没更新《Java线程》专栏了,主要是这周工作 ... -
java批量生成图片的问题
2012-04-18 18:21 9821.linux安装字体 以微软雅黑为例,找到msyh.tt ... -
linux下没有设置jmxremote port的时候,如何显示jconsole的图形界面
2012-04-18 18:19 2232在linux服务器上,因为gui显示的问题。我们直接jc ...
相关推荐
在本文中,我们将深入探讨如何使用Swt/Jface库中的`tableViewer`组件来创建一个基本的表格视图。Swt(Standard Widget Toolkit)是Java中用于开发原生界面的应用程序开发工具包,而Jface是建立在Swt之上的抽象层,...
在IT领域,特别是Java Swing和Eclipse RCP开发中,TableViewer是经常被用来展示数据的一个组件。"Set TableViewer Cell Focus"这个话题是关于如何在TableViewer中设置焦点到特定单元格上,这对于实现用户交互和数据...
点击Enter键,对TableViewer的单元格进行逐个遍历的辅助类,推荐用于使用ViewerColumn.setEditingSupport的可编辑TableViewer。 Since 3.3, an alternative API is available, see ViewerColumn.setEditingSupport...
本篇文章将聚焦于SWT/JFace中的tableViewer组件的开发与简化。 首先,`tableViewer`是JFace库中用于展示表格数据的核心组件。它为开发者提供了一种方便的方式来显示和操作数据,同时处理了诸如排序、过滤等复杂功能...
本篇文章将重点讲解如何在SWT中自定义TableViewer,以便展示项目中的所有错误信息,这对于调试和问题排查至关重要。 TableViewer是SWT JFace库中的一个组件,它为 SWT 的 Table 控件提供了一种数据绑定和视图操作的...
在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...
在 Eclipse RCP(Rich Client Platform)开发中,`TableViewer` 是一个强大的组件,用于展示数据表。`TableViewer` 是 `JFace` 库的一部分,它提供了与 SWT(Standard Widget Toolkit)表格控件的高级接口,使得数据...
【TableViewer示例】——全面探索TableViewer的使用 在Java SWT(Standard Widget Toolkit)库中,TableViewer是一个强大的组件,用于在用户界面中展示表格数据。它提供了丰富的功能,如排序、过滤、编辑和自定义列...
在Java开发领域,尤其是涉及到Swing或Eclipse RCP( Rich Client Platform)应用程序时,`TableViewer`是一个非常重要的组件。它允许开发者在用户界面中展示表格数据,并提供了丰富的功能来处理这些数据。本篇文章将...
Jface TableViewer控件实现的对标签文件的标签属性的修改功能。 用TextCellEditor和ComboBoxCellEditor给表格添加编辑功能。 通过表格的addListener事件为表格的单元格添加编辑功能,事例根据鼠标点击时鼠标的X和Y...
RCP开发比Table更高级的TableViewer的使用。实现列的隐藏与显示
在Java开发领域,TableViewer是SWT(Standard Widget Toolkit)库中的一个重要组件,常用于创建类似于电子表格的数据展示界面。这个“带有翻页功能的TableViewer.rar”文件可能包含了一个示例项目,演示如何在...
标题“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
虽然文件名字起得很笼统 里面只有一个关于TableViewer的项目源码 源码的依据是我转载的一篇学习TableViewer的博客源码 http://blog.csdn.net/weiweiwei256/article/details/49514699
### Eclipse从入门到精通2 —— JFace TableViewer详解 #### 概述 本文档针对CSDN上《Eclipse从入门到精通2》一书的部分更新内容进行了整合,主要聚焦于Eclipse环境下JFace框架的TableViewer组件的深入解析。...
例如,项目空间管理员可以创建一个名为tableviewer的角色,并将用户Alice、Bob和Charlie添加到该角色中: use prj1; create role tableviewer; grant List, CreateInstance on project prj1 to role tableviewer; ...
TableViewer tableViewer = new TableViewer(parent, SWT.BORDER | SWT.MULTI); ``` 2. **实现 TableContentProvider**:实现 `TableContentProvider` 接口来提供表格的数据源。 3. **实现 TableLabelProvider**...
`swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的TableViewer组件实现单元格的编辑功能,包括Text、Combo以及FileDialog这三种不同的编辑样式。 首先,SWT是Eclipse项目的一部分,它...
TableViewer tableViewer = new TableViewer(table); tableViewer.setContentProvider(new ArrayContentProvider()); tableViewer.setLabelProvider(new ColumnLabelProvider()); tableViewer.setInput(data...