eclipse-把TableViewer中的数据排序

怎么把eclipse中的TableViewer中的数据排序呢?点击列表头,让此中的数据按照升序或者降序摆列。下面一步一步怎么实现排序方式,我写的经验对你进修java有帮忙的话,给我投票、点赞或者保藏!

http://v.youku.com/v_show/id_XMzk2ODI2NDcwMA==.html

0eclipse中table控件怎么具有编纂功能

1eclipse中ViewerFilter实现过滤数据

0eclipse table利用增添删除一行数据

工具/原料

  • eclipse mars 2

方式/步骤

  1. 1

    打开这个文件vpshangpinxinxi.java,增添担当ViewerSorter的排序类。

  2. 2

    java中这个“compareTo”函数怎么利用,下面将利用这个函数比力两个数值的大小。当前数值年夜于比力数值的话返回1,当前数值等于比力数值的话返回0,当前数值小于比力数值的话返回-1。

    Intager  a=8;

    a.compareTo(2);//返回1

    a.compareTo(8);  //返回0

    a.compareTo(10);//返回-1

  3. 3

    担当ViewerSorter的排序类,此中重写这个compare这方式,把当前列的数值两个比力,返回int值(1年夜于,0等于,-1小于)。写好这个比力方式java系统主动挪用。在排序类每一个表中的列为一个整形数值,正数为升序,负数为降序(例如:1列是升序,-1列是降序)。

    public class shujupaixu extends ViewerSorter {

    private int lx;              //列是升序或者降序 例如:lx=fenlei;  lx=-fenlei;

    private static final int fenlei=1;              //  分类列界说常数变量1

    private static final int mingcheng=2;

    private static final int jiage=3;

    private static final int hyjiage=4;

    public shujupaixu(int lx){

    this.lx=lx;

    }

    public int compare(Viewer viewer, Object e1, Object e2) {

    Shangpinxinxi sp1=(Shangpinxinxi)e1;

    Shangpinxinxi sp2=(Shangpinxinxi)e2;

    switch(lx){

    case fenlei:{

    String sz1=sp1.getfenlei();

    String sz2=sp2.getfenlei();

    return sz1.compareTo(sz2);

    }

    case -fenlei:{

    String sz1=sp1.getfenlei();

    String sz2=sp2.getfenlei();

    return sz2.compareTo(sz1);

    }

    case mingcheng:{

    String sz1=sp1.getmingcheng();

    String sz2=sp2.getmingcheng();

    return sz1.compareTo(sz2);

    }

    case -mingcheng:{

    String sz1=sp1.getmingcheng();

    String sz2=sp2.getmingcheng();

    return sz2.compareTo(sz1);

    }

    case jiage:{

    Float sz1=sp1.getjiage();

    Float sz2=sp2.getjiage();

    return sz1.compareTo(sz2);

    }

    case -jiage:{

    Float sz1=sp1.getjiage();

    Float sz2=sp2.getjiage();

    return sz2.compareTo(sz1);

    }

    case hyjiage:{

    Float sz1=sp1.gethyjiage();

    Float sz2=sp2.gethyjiage();

    return sz1.compareTo(sz2);

    }

    case -hyjiage:{

    Float sz1=sp1.gethyjiage();

    Float sz2=sp2.gethyjiage();

    return sz2.compareTo(sz1);

    }

    }

    return 0;

    }

    }

  4. 4

    选择排序的列表头,增添列表头的监督事务widgetSelected,只要点击列表头就促发事务。

  5. 5

    java的前提选择 a?b:c,下面用这个前提初始化排序类。

    若是lx=true时  返回shujupaixu.fenlei这个数据,暗示这个列是升序序列

    若是lx=false时 返回-shujupaixu.fenlei这个数据,暗示这个列是降序序列

    lx?shujupaixu.fenlei:-shujupaixu.fenlei

    下图是名称列

  6. 6

    在监督事务中界说布尔量初始化为true,是暗示升序的状况,反之是降序的状况,事务在升序和降序瓜代运行的。

    tblclmnNewColumn.addSelectionListener(new SelectionAdapter() {

    boolean lx=true; 

    @Override

    public void widgetSelected(SelectionEvent e) {

    //设置排序

    tv.setSorter(new shujupaixu(lx?shujupaixu.fenlei:-shujupaixu.fenlei));

    lx=!lx;  

    }

    });

  7. 7

    运行项目,促发列表头的监督事务,TableViewer中的数据在升序和降序排序数据。

  • 发表于 2018-12-19 00:00
  • 阅读 ( 264 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论