java jface table_JAVA.SWT/JFace: JFace篇之MVC的表格、树和列表(1)

《Eclipse SWT/JFACE 核心应用》 清华大学出版社 19 MVC的表格、树和列表

19.1 MVC概述

MVC是模型-视图=控制器(Model-View-Controller)设计模式的简称。MVC模式将数据与视图分开,通过控制器来控制与数据交互。

JFace中有关实现MVC模式的控件都在org.eclipse.jface.viewers包下。所有的MVC控件都继承自View类,该类是一个抽

象类,不能直接创建对象,需使用其实现的子类。常用的类如下:

◆ ListViewer类:列表控件。

◆ TreeViewer类:树控件。

◆ TableViewer类:表格控件。

◆ TextViewer、SourceViewer、ProjectionViewer为编辑文本的控件。

19.2 表格(TableViewer)

表格程序的代码:

packagewww.swt.com.ch19;

import java.util.ArrayList;

import java.util.List;

import org.eclipse.jface.action.Action;

import org.eclipse.jface.action.MenuManager;

import org.eclipse.jface.viewers.CellEditor;

import org.eclipse.jface.viewers.CheckboxTableViewer;

import org.eclipse.jface.viewers.DoubleClickEvent;

import org.eclipse.jface.viewers.ICellModifier;

import org.eclipse.jface.viewers.IDoubleClickListener;

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.viewers.ViewerFilter;

import org.eclipse.jface.window.ApplicationWindow;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.SelectionAdapter;

import org.eclipse.swt.events.SelectionEvent;

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;

public class TableWindow extends ApplicationWindow {

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

public TableWindow() {

super(null);

initPersons();

}

//初始化表格数据,通常是从数据库中读出

private void initPersons() {

persons = new ArrayList();

persons.add( new PersonEO(1,"张三","男","灰色"));

persons.add( new PersonEO(2,"李四","女","白色"));

}

//设置窗口的标题和大小

protected void configureShell(Shell shell) {

super.configureShell(shell);

shell.setSize(300, 200);

shell.setText("TableViewer程序示例");

}

//创建窗口的控件

protected Control createContents(Composite parent) {

//创建TableViewer对象

table = new TableViewer(parent ,SWT.FULL_SELECTION);

//table = CheckboxTableViewer.newCheckList( parent , SWT.FULL_SELECTION);

//创建表头

for ( int i =0; i

new TableColumn(table.getTable(), SWT.LEFT).setText(COLUMN_NAME[i]);

table.getTable().getColumn(i).pack();

}

//设置排序器

table.setSorter( new TableSorter());   //分别为表头的每一列注册事件

TableColumn column = table.getTable().getColumn(0);

column.addSelectionListener( new SelectionAdapter(){

public void widgetSelected(SelectionEvent e) {

//单击时,重新设置排序对象属性

((TableSorter)table.getSorter()).doSort(TableWindow.ID);

//刷新表格数据

table.refresh();

}

});

column = table.getTable().getColumn(1);

column.addSelectionListener( new SelectionAdapter(){

public void widgetSelected(SelectionEvent e) {

((TableSorter)table.getSorter()).doSort(TableWindow.NAME);

table.refresh();

}

});

column = table.getTable().getColumn(2);

column.addSelectionListener( new SelectionAdapter(){

public void widgetSelected(SelectionEvent e) {

((TableSorter)table.getSorter()).doSort(TableWindow.GENDER);

table.refresh();

}

});

column = table.getTable().getColumn(3);

col

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值