mysorter.java

来自「这是我写的一个SWT程序」· Java 代码 · 共 72 行

JAVA
72
字号
/**
 * @作者:陈刚
 * @Email:glchengang@yeah.net
 * @Blog:http://blog.csdn.net/glchengang
 */
package jface.tableviewer;

import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;

//------文件名:MySorter.java-----------
public class MySorter extends ViewerSorter {
    //每列对应一个不同的常量,正数为升序、其相反数为降序
    public static final int ID = 1;

    public static final int NAME = 2;

    //所要排序的列
    private int sortType;

    /**
     * 构造函数。加private表示不能用new MySorter()生成本类对象了
     */
    private MySorter() {
    }

    /**
     * 构造函数。根据不同的列来生成不同的排序对象
     */
    public MySorter(int sortType) {
        this.sortType = sortType;
    }

    /**
     * 最关键的方法:改写继承自ViewerSorter的方法,它的返回值是一个整数 正数,则obj1移到obj2之间 零,则obj1和obj2的位置不动
     * 负数,则obj1移到obj2之后
     */
    public int compare(Viewer viewer, Object obj1, Object obj2) {
        /*
         * 传入两条记录(实体类),然后依列给出它俩的先后顺序。
         */
        PeopleEntity o1 = (PeopleEntity) obj1;
        PeopleEntity o2 = (PeopleEntity) obj2;
        switch (sortType) {
        case ID: {
            Long l1 = o1.getId();
            Long l2 = o2.getId();
            /*
             * compareTo返回值有三个值1,0,-1 “l1”大于“l2”返回1 “l1”等天“l2”返回0 “l1”小于“l2”返回-1
             * 更详细资料请查询JDK帮助文档
             */
            return l1.compareTo(l2);
        }
        case -ID: {
            Long l1 = o1.getId();
            Long l2 = o2.getId();
            return l2.compareTo(l1);
        }
        case NAME: {
            String s1 = o1.getName();
            String s2 = o2.getName();
            return s1.compareTo(s2);
        }
        case -NAME: {
            String s1 = o1.getName();
            String s2 = o2.getName();
            return s2.compareTo(s1);
        }
        }
        return 0;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?