TableViewer初入
本例会实现些效果
右键菜单
双击一行
首先新建PeopleEntity,此类为假想数据表entity
package com.mypractice;
import java.util.Date;
public class PeopleEntity {
private Long id;
private String name;
private boolean sex;
private int age;
private Date createDate;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
}
然后创建PeopleFactory,用来生成PeopleEntity
package com.mypractice;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class PeopleFactory {
public static List<PeopleEntity> getPeoples() {
List<PeopleEntity> list = new ArrayList<PeopleEntity>();
{
PeopleEntity o = new PeopleEntity();
o.setId(new Long(1));
o.setName("赵云");
o.setSex(true);
o.setAge(28);
o.setCreateDate(new Date());
list.add(o);
}
{
PeopleEntity o = new PeopleEntity();
o.setId(new Long(2));
o.setName("关羽");
o.setSex(true);
o.setAge(20);
o.setCreateDate(new Date());
list.add(o);
}
{
PeopleEntity o = new PeopleEntity();
o.setId(new Long(3));
o.setName("曹操");
o.setSex(true);
o.setAge(23);
o.setCreateDate(new Date());
list.add(o);
}
{
PeopleEntity o = new PeopleEntity();
o.setId(new Long(4));
o.setName("张飞");
o.setSex(false);
o.setAge(30);
o.setCreateDate(new Date());
list.add(o);
}
return list;
}
}
创建OpenAction,生成右键菜单"打开"
package com.mypractice;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
public class OpenAction extends Action {
private TableViewer tv;
public OpenAction(TableViewer tv) {
this.tv = tv;
setText("打开");
}
public void run() {
IStructuredSelection selection = (IStructuredSelection) tv.getSelection();
PeopleEntity o = (PeopleEntity) selection.getFirstElement();
if(o == null)
MessageDialog.openInformation(null, null, "请先选择记录");
else
MessageDialog.openInformation(null, null, o.getName());
}
}
创建RefreshAction类 生成右键菜单"刷新"
package com.mypractice;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.TableViewer;
public class RefreshAction extends Action {
private TableViewer tv;
public RefreshAction(TableViewer tv) {
this.tv = tv;
setText("刷新");
}
public void run() {
tv.refresh();//表格的刷新方法,界面会重新读取数据并显示
}
}
创建MyActionGroup 管理Action
package com.mypractice;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.actions.ActionGroup;
public class MyActionGroup extends ActionGroup {
private TableViewer tv;
public MyActionGroup(TableViewer tv) {
this.tv = tv;
}
public void fillContextMenu(IMenuManager mgr) {
MenuManager menuManager = (MenuManager) mgr;
menuManager.add(new OpenAction(tv));
menuManager.add(new RefreshAction(tv));
Table table = tv.getTable();
Menu menu = menuManager.createContextMenu(table);
table.setMenu(menu);
}
}
创建TableViewerContentProvider 内空提供器,用来对输入到表格的数据进行过滤
package com.mypractice;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
public class TableViewerContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
if(inputElement instanceof List)
return ((List) inputElement).toArray();
return new Object[0];
}
/**
* 当TableViewer对象被关闭时触发执行此方法
*/
public void dispose() {
}
/**
* 当TableViewer再次调用setInput()时触发此方法执行
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
创建TableViewerLabelProvider 对单个对象进行处理和转化,决定实体显示位置
package com.mypractice;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;
public class TableViewerLabelProvider implements ITableLabelProvider {
private Image[] images = new Image[]{
new Image(null, "icons/star.gif"),
new Image(null, "icons/refresh.gif"),
new Image(null, "icons/3.gif")
};
public Image getColumnImage(Object element, int columnIndex) {
PeopleEntity o = (PeopleEntity) element;
if(o.getName().equals("赵云") || o.getName().equals("张飞")) {
if(columnIndex == 0)
return images[0];
if(columnIndex == 2)
return o.isSex() ? images[1] : images[2];
}
return null;
}
public String getColumnText(Object element, int columnIndex) {
PeopleEntity o = (PeopleEntity) element;
if(columnIndex == 0)
return o.getId().toString();
if(columnIndex == 1)
return o.getName();
if(columnIndex == 2)
return o.isSex() ? "男" : "女";
if(columnIndex == 3)
return String.valueOf(o.getAge());
if(columnIndex == 4)
return o.getCreateDate().toString();
return null;
}
public void addListener(ILabelProviderListener listener) {
}
public void dispose() {
for(Image image : images) {
image.dispose();
}
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
}
最后创建ShowTable
package com.mypractice;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
public class ShowTable {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER
| SWT.FULL_SELECTION);
Table table = tv.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableLayout layout = new TableLayout();
table.setLayout(layout);
layout.addColumnData(new ColumnWeightData(13));
new TableColumn(table, SWT.NONE).setText("ID号");
layout.addColumnData(new ColumnWeightData(40));
new TableColumn(table, SWT.NONE).setText("姓名");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("性别");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("年龄");
layout.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("记录建立时间");
tv.setContentProvider(new TableViewerContentProvider());
tv.setLabelProvider(new TableViewerLoabelProvider());
Object data = PeopleFactory.getPeoples();
tv.setInput(data);
ShowTable show = new ShowTable();
show.addListener(tv);
MyActionGroup actionGroup = new MyActionGroup(tv);
actionGroup.fillContextMenu(new MenuManager());
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
private void addListener(TableViewer tv) {
tv.addDoubleClickListener(new IDoubleClickListener(){
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
PeopleEntity o = (PeopleEntity) selection.getFirstElement();
MessageDialog.openInformation(null, "提示", o.getName());
}
});
//选择事件(单击)
tv.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
// IStructuredSelection selection = (IStructuredSelection) event.getSelection();
// PeopleEntity o = (PeopleEntity) selection.getFirstElement();
// MessageDialog.openInformation(null, "提示", o.getName() + "年龄是" + o.getAge());
}
});
}
}
- 大小: 31.5 KB
- 大小: 32.1 KB
- 大小: 43.8 KB
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Swt/Jface库中的`tableViewer`组件来创建一个基本的表格视图。Swt(Standard Widget Toolkit)是Java中用于开发原生界面的应用程序开发工具包,而Jface是建立在Swt之上的抽象层,...
在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...
本篇文章将聚焦于SWT/JFace中的tableViewer组件的开发与简化。 首先,`tableViewer`是JFace库中用于展示表格数据的核心组件。它为开发者提供了一种方便的方式来显示和操作数据,同时处理了诸如排序、过滤等复杂功能...
点击Enter键,对TableViewer的单元格进行逐个遍历的辅助类,推荐用于使用ViewerColumn.setEditingSupport的可编辑TableViewer。 Since 3.3, an alternative API is available, see ViewerColumn.setEditingSupport...
Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar
`TableViewer`是Eclipse提供的一个高级表格视图组件,它是`JFace Data Binding`包的一部分。`TableViewer`基于SWT(Standard Widget Toolkit)的`Table`控件,但提供了更多的功能和灵活性,使得数据绑定和表格操作变...
4. "Eclipse JFace TableViewer - Tutorial.mht" 是一个JFace TableViewer的教程,可能包含了如何创建和操作TableViewer的详细步骤。 5. "[Eclipse_Project] View of -org_eclipse_swt_snippets-src-org-eclipse-swt...
Jface TableViewer控件实现的对标签文件的标签属性的修改功能。 用TextCellEditor和ComboBoxCellEditor给表格添加编辑功能。 通过表格的addListener事件为表格的单元格添加编辑功能,事例根据鼠标点击时鼠标的X和Y...
`swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的TableViewer组件实现单元格的编辑功能,包括Text、Combo以及FileDialog这三种不同的编辑样式。 首先,SWT是Eclipse项目的一部分,它...
总的来说,"Set TableViewer Cell Focus"是Eclipse JFace编程中的一个重要技巧,它涉及到对TableViewer组件的操作和对用户交互的响应。理解和掌握这些知识点,对于编写功能丰富的用户界面是非常有益的。
2. **Viewer Framework**:JFace的`TableViewer`和`TreeViewer`提供了强大的表格和树形视图管理,支持数据模型、过滤、排序等功能。例如,创建一个表格展示数据: ```java Table table = new Table(shell, SWT....
1. **Viewers**:JFace提供了一种模型-视图-控制器(MVC)的实现,用于构建可定制的数据查看器,如TreeViewer和TableViewer。它们允许开发者以树形或表格形式展示数据,并提供了丰富的操作,如排序、过滤和编辑。 2...
**JFace技术详解** JFace是Eclipse框架中的一部分,它是构建用户界面(UI)的一种高级工具包。JFace的设计目标是提供一个面向对象的、与操作系统无关的接口,简化Swing和SWT(Standard Widget Toolkit)之间的开发...
3. 表格和树视图:如何使用TableViewer和TreeViewer来展示和操作结构化数据。 4. 模型-视图-控制器(MVC):解释MVC模式如何帮助保持代码的清晰性和可扩展性。 5. 对话框(Dialogs):介绍如何使用JFace提供的标准...
4. **表和树的数据视图**:JFace的TableViewer和TreeViewer提供了对表格和树形结构数据的高级支持,包括排序、过滤和分页等功能。 5. **视图和编辑器**:在Eclipse IDE中,JFace用于创建可复用的视图和编辑器组件,...
- 探索JFace:了解JFace如何简化SWT的使用,如利用TreeViewer和TableViewer展示数据。 - 练习MVC:通过创建一个简单的数据编辑视图,实践JFace的MVC模式。 - 扩展Eclipse:学习如何创建Eclipse插件,将SWT/JFace...
JFace的TableViewer和TreeViewer提供了一种更抽象的方式来操作这些组件,包括数据绑定和排序。 7. **JFace服务**:包括Dialog、WorkbenchWindow、Action、SelectionService等,它们简化了窗口、动作和选择事件的...
3. **表和树的视图**:JFace的TableViewer和TreeViewer类提供了丰富的表格和树形视图功能,支持排序、过滤和自定义列。 4. **对话框和页面**:JFace简化了创建各种对话框和向导页的过程,例如InputDialog、...
`TableViewer` 是 `JFace` 库的一部分,它提供了与 SWT(Standard Widget Toolkit)表格控件的高级接口,使得数据绑定、排序、过滤等功能变得更加简单。在标题“tableviewer edit”中提到的编辑功能,是指`...
2. **Viewers**:JFace的Viewer是一个通用的组件容器,它可以用来展示数据集合,比如TableViewer、TreeViewer等。Viewer提供了丰富的事件处理机制和扩展接口,方便自定义行为。 3. **Dialogs and Wizards**:JFace...