TableView排序

给TableViewer添加排序器的方法:

1.创建一个ViewerSoorter类或者其子类;

2.把该类的对象赋值给TableViewer即可,如下所示:

 

org.eclipse.jface.viewers.ViewerSorter

 

 

viewer.setSorter(sorter);

 

public class AddressViewerSorter extends ViewerSorter {

private static final String TAG_DESENDING = "descending";

private static final String TAG_INDEX = "columnIndex";

private static final String TAG_CATEGORY = "category";

private static final String TAG_TRUE = "true";

 

private class SortInfo {

int columnIndex;

Comparator comparator;

boolean descending;

}

 

private TableViewer viewer;

private SortInfo[] infos;

private SortInfo currSort;

 

public AddressViewerSorter(TableViewer viewer, TableColumn[] columns,

Comparator[] comparators) {

this.viewer = viewer;

infos = new SortInfo[columns.length];

for (int i = 0; i < columns.length; i++) {

infos[i] = new SortInfo();

infos[i].columnIndex = i;

infos[i].comparator = comparators[i];

infos[i].descending = false;

createSelectionListener(columns[i], infos[i]);

}

currSort = infos[0];

}

 

public int compare(Viewer viewer, Object address1, Object address2) {

int result = currSort.comparator.compare(address1, address2);

if (result != 0) {

if (currSort.descending)

return -result;

return result;

}

return 0;

}

 

private void createSelectionListener(final TableColumn column,

final SortInfo info) {

column.addSelectionListener(new SelectionAdapter() {

public void widgetSelected(SelectionEvent e) {

currSort = info;

info.descending = !info.descending;

                                //调用该方法才能使viewer调用compare重新排序

viewer.refresh();

}

});

}

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值