有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

GWT celltable小部件中不同属性的java排序

我有一个具有以下属性(feature、Total、Pass、Fail)的celltable,还有一堆行。我想添加对按字母顺序排序(即文本)或按失败排序(整数)的支持。请注意,我不想同时按功能和表进行排序!我想把它们分别分类。我如何做到这一点

可以使用addColumnSortHandler方法添加列排序处理程序,但当我选择任何可排序的列时,就会触发此处理程序。如果我添加了超过1个列排序处理程序,所有比较器都会被触发。如何确保仅使用我单击的列对数据进行排序。i、 e.如果我单击功能标题,它应该按字母顺序排序。如果我单击Fail,它将按Fail排序。。等等

任何帮助都将不胜感激。多谢各位

下面是一段代码片段

        final ListHandler<FeatureSummaryObject> failedColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList());
        failedColSortHandler.setComparator(failedCol, new Comparator<FeatureSummaryObject>() {

            @Override
            public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) {
                return o1.getFailed() - o2.getFailed();
            }
        });
        table.addColumnSortHandler(failedColSortHandler);
        failedCol.setSortable(true);


        ListHandler<FeatureSummaryObject> featureColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList());
        featureColSortHandler.setComparator(featureCol, new Comparator<FeatureSummaryObject>() {

            @Override
            public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) {
                return o1.feature.compareTo(o2.feature);
            }
        });
        table.addColumnSortHandler(featureColSortHandler);

        featureCol.setSortable(true);

问候,


共 (1) 个答案

  1. # 1 楼答案

    我使用CellTable来显示文件列表(文件名、大小、Mime类型)。单击标题时,我可以使用以下代码按列进行单独排序:

    首先,我将列标记为可排序:

       urlColumn.setSortable(true);
       mimeColumn.setSortable(true);
       sizeColumn.setSortable(true);
    

    然后,我为每一列添加一个create-a-ColumnSortHandler,并将其添加到表中,如下所示:

       // Add sorting for the Name column
       ListHandler<Asset> urlSortHandler = new ListHandler<Asset>(dataProvider.getList());
       urlSortHandler.setComparator(urlColumn, new Comparator<Asset>() {
         public int compare(Asset o1, Asset o2) {
            ....
         }
       });
       table.addColumnSortHandler(urlSortHandler);
    
       // Add sorting for the Size column
       ListHandler<Asset> sizeSortHandler = new ListHandler<Asset>(dataProvider.getList());
       sizeSortHandler.setComparator(sizeColumn, new Comparator<Asset>() {
         public int compare(Asset o1, Asset o2) {
            ....
         }
       });
       table.addColumnSortHandler(sizeSortHandler);
    
       // Add sorting for the Type column
       ListHandler<Asset> mimeSortHandler = new ListHandler<Asset>(dataProvider.getList());
       mimeSortHandler.setComparator(mimeColumn, new Comparator<Asset>() {
          public int compare(Asset o1, Asset o2) {
             ...
          }
       });
       table.addColumnSortHandler(mimeSortHandler);
    

    我添加了一些日志记录,并验证了是否触发了相应的排序处理程序(这意味着如果单击“文件名”,则只调用文件名排序处理程序)

    希望这个示例代码能有所帮助。如果没有,请提供一些示例代码,以帮助我们更好地诊断问题