自定义MyEditingSupport实现EditingSupport,代码如下
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.SWT;
public class MyEditingSupport extends EditingSupport {
private static final String[] CROPPRING_SEASONS = { "1", "2" ,"3", "4", "5" };
private static final String[] GENERATION = { "F1DH", "F2" ,"F3", "F4", "F5" ,"F6", "F7" ,"F8"};
private static final String[] ROUNDS_INTER = { "1", "2" ,"3", "4:3" };
private static final String[] ROUNDS_SELFING = { "1", "2" ,"3", "4", "5" ,"6" ,"7" ,"8:5" };
private CellEditor[] editors;
private StructuredViewer viewer;
public MyEditingSupport(TableViewer viewer) {
super(viewer);
this.viewer = viewer;
editors = new CellEditor[10];
editors[0] = new ComboBoxCellEditor(viewer.getTable(), CROPPRING_SEASONS, SWT.READ_ONLY);
editors[1] = new TextCellEditor(viewer.getTable());
editors[2] = new ComboBoxCellEditor(viewer.getTable(), GENERATION, SWT.READ_ONLY);
editors[3] = new ComboBoxCellEditor(viewer.getTable(), GENERATION, SWT.READ_ONLY);
editors[4] = new ComboBoxCellEditor(viewer.getTable(), ROUNDS_INTER, SWT.READ_ONLY);
editors[5] = new ComboBoxCellEditor(viewer.getTable(), ROUNDS_SELFING, SWT.READ_ONLY);
editors[6] = new TextCellEditor(viewer.getTable());
editors[7] = new TextCellEditor(viewer.getTable());
editors[8] = new TextCellEditor(viewer.getTable());
editors[9] = new TextCellEditor(viewer.getTable());
}
@Override
protected CellEditor getCellEditor(Object element) {
InputInfoItem item = (InputInfoItem) element;
for(int i = 1 ; i<= 10 ; i++){
if(item.getId().equals(String.valueOf(i)))
return editors[i-1];
}
/*if (item.getId().equals("1")) {
return editors[0];
} else if (item.getId().equals("2")) {
return editors[1];
} */
return null;
}
@Override
protected boolean canEdit(Object element) {
return true;
}
@Override
protected Object getValue(Object element) {
InputInfoItem item = (InputInfoItem) element;
if (item.getId().equals("1")) {
for(int i = 0 ; i<CROPPRING_SEASONS.length ; i++){
if(CROPPRING_SEASONS[i].equals(item.getValue()))
return new Integer(i);
}
} else if (item.getId().equals("2")) {
return item.getValue();
} else if (item.getId().equals("3")) {
for(int i = 0 ; i<GENERATION.length ; i++){
if(GENERATION[i].equals(item.getValue()))
return new Integer(i);
}
} else if (item.getId().equals("4")) {
for(int i = 0 ; i<GENERATION.length ; i++){
if(GENERATION[i].equals(item.getValue()))
return new Integer(i);
}
} else if (item.getId().equals("5")) {
for(int i = 0 ; i<ROUNDS_INTER.length ; i++){
if(ROUNDS_INTER[i].equals(item.getValue()))
return new Integer(i);
}
} else if (item.getId().equals("6")) {
for(int i = 0 ; i<ROUNDS_SELFING.length ; i++){
if(ROUNDS_SELFING[i].equals(item.getValue()))
return new Integer(i);
}
} else if (item.getId().equals("7")) {
return item.getValue();
} else if (item.getId().equals("8")) {
return item.getValue();
} else if (item.getId().equals("9")) {
return item.getValue();
} else if (item.getId().equals("10")) {
return item.getValue();
}
return null;
}
@Override
protected void setValue(Object element, Object value) {
InputInfoItem item = (InputInfoItem) element;
if(item.getId().equals("1")) {
item.setValue(CROPPRING_SEASONS[Integer.parseInt(value.toString())]);
} else if(item.getId().equals("2")) {
item.setValue(value.toString());
} else if(item.getId().equals("3")) {
item.setValue(GENERATION[Integer.parseInt(value.toString())]);
} else if(item.getId().equals("4")) {
item.setValue(GENERATION[Integer.parseInt(value.toString())]);
} else if(item.getId().equals("5")) {
item.setValue(ROUNDS_INTER[Integer.parseInt(value.toString())]);
} else if(item.getId().equals("6")) {
item.setValue(ROUNDS_SELFING[Integer.parseInt(value.toString())]);
} else if(item.getId().equals("7")) {
item.setValue(value.toString());
} else if(item.getId().equals("8")) {
item.setValue(value.toString());
} else if(item.getId().equals("9")) {
item.setValue(value.toString());
} else if(item.getId().equals("10")) {
item.setValue(value.toString());
}
this.viewer.refresh();
}
}
表格共有三列、十行,为第三列添加EditingSupport
tableViewer = new TableViewer(this,SWT.FULL_SELECTION);
table = tableViewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableColumn tableColumn = new TableColumn(table, SWT.NONE);
tableColumn.setWidth(60);
tableColumn.setText("ID");
TableColumn tableColumn1 = new TableColumn(table, SWT.NONE);
tableColumn1.setWidth(220);
tableColumn1.setText("Name");
TableColumn tableColumn2 = new TableColumn(table, SWT.NONE);
tableColumn2.setWidth(80);
tableColumn2.setText("Value");
this.setLayout(new FillLayout());
this.setBackground(new Color(Display.getCurrent(), 255, 255, 255));
[color=red]TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer,tableColumn2);
tableViewerColumn.setEditingSupport(new MyEditingSupport(tableViewer));[/color]
tableViewer.setLabelProvider();
tableViewer.setContentProvider();
tableViewer.setInput(inputInfoList);
分享到:
相关推荐
SWT/JFace 是一种功能强大且实用的 GUI 开发工具套件,通过本教程,你将学习如何使用 SWT/JFace 来构建高效、美观的 GUI 应用程序。本教程将涵盖 SWT/JFace 的概览、目的、许可证和平台支持、SWT 和 JFace 的区别、...
7. 视图(Views)和编辑器(Editors):在Eclipse RCP框架下,如何使用JFace创建可重用的视图和专业化的编辑器。 8. 事件处理:讲解如何注册和处理SWT和JFace事件,如SelectionEvent、FocusEvent等。 9. SWT和JFace...
压缩包子文件的文件名称列表中包含的多个jar文件是Eclipse项目的一部分,它们为不同功能提供了支持: 1. `org.eclipse.ui.workbench_3.3.1.M20070921-1200.jar`:这是Eclipse工作台UI框架的核心库,包含了用于构建...
- 使用 SWT 创建一个简单的按钮,该按钮在不同操作系统上呈现为原生风格的按钮。 - 利用 SWT 的事件监听器响应用户的点击事件。 - **JFace的作用**: - **简化UI开发**:JFace 提供了一系列高级抽象,简化了使用...
SWT 是一个直接与操作系统进行交互的底层库,提供了丰富的控件和组件,而 JFace 建立在 SWT 之上,提供了一层抽象,简化了 GUI 的设计和实现,使其更易于管理和维护。 在 SWT/Jface API 3.4 版本中,我们关注以下几...
SWT/Jface开发入门指南是一篇专为初学者编写的教程,旨在帮助他们快速搭建开发环境并掌握使用SWT和JFace编写图形化应用程序的基本技巧。以下是该教程所涵盖的关键知识点: 1. **SWT和JFace简介**: - SWT全称...
在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录窗口。通常,这样的窗口会包含用户名和密码输入框,以及登录、取消等按钮。以下是一些可能涉及的知识点: 1. *...
Eclipse SWT/JFace 核心应用 带书签 Eclipse SWT/JFace
SWT/JFace开发实例
本文将深入探讨这两个技术,并结合《SWT/JFace in Action》这本书的相关内容,提供一个全面的知识框架。 SWT是Java的GUI工具包,它提供了原生的控件,使得Java应用程序的用户界面可以与操作系统深度融合,从而获得...
Eclipse SWT/JFace是Eclipse框架中的两个关键组件,它们为构建用户界面提供了强大的支持。SWT(Standard Widget Toolkit)是Eclipse的本机GUI库,而JFace是基于SWT构建的更高层次的抽象层,它简化了UI开发过程。 ...
JFace则是建立在SWT之上的一个高级UI框架,它简化了SWT的使用,提供了数据绑定、对话框、视图、表和树等控件的抽象。JFace通过模型-视图-控制器(MVC)的设计模式,帮助开发者更好地组织代码,减少重复工作,并且...
【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...
JFace则是建立在SWT之上的一个高级UI框架,它简化了SWT的使用,提供了数据绑定、视图模型以及事件处理机制,使开发者能够更专注于业务逻辑而不是UI细节。 1.2 SWT/JFACE 与 SWING 的特点及区别 1.2.1 Swing的特点 ...
JFace 是建立在SWT之上的一个抽象层,它提供了一些高级服务,如数据绑定、视图和对话框的构建器,以及模型-视图-控制器(MVC)的设计模式,这使得开发者可以更专注于业务逻辑,而不是GUI的细节。JFace还引入了视图、...
1. **视图和编辑器**:JFace为Eclipse插件开发提供了基础框架,支持创建视图(View)和编辑器(Editor)。 2. **数据绑定**:JFace的数据绑定功能比SWT更强大,可以方便地处理模型和视图之间的数据同步,如`...
这意味着使用SWT创建的界面与目标操作系统的外观和行为一致,提供了一种跨平台的解决方案。SWT的主要组件包括按钮、文本框、列表、树、表格等基本UI元素。通过这些元素,开发者可以构建出与本地应用程序相似的用户...
同时,Eclipse RCP(Rich Client Platform)框架就是基于SWT和JFace构建的,它为开发者提供了一个完整的框架,用于创建功能强大的桌面应用程序。 在Eclipse SWT/JFace核心应用中,以下几个关键知识点不容忽视: 1....
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...