Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 如何在带表查看器的SWT表中强制排序_Eclipse_Sorting_Swt_Jface - Fatal编程技术网

Eclipse 如何在带表查看器的SWT表中强制排序

Eclipse 如何在带表查看器的SWT表中强制排序,eclipse,sorting,swt,jface,Eclipse,Sorting,Swt,Jface,我只想第一次对SWT表列进行排序。 我有一个带有TableViewer的表,我想在setInput方法之后或之前对programmaticaly进行排序 列是动态生成的,最后一列是平均列。 有没有办法按程序排序 我只使用这一行代码: columnPromEcr = new TableColumn(table, SWT.RIGHT); columnPromEcr.setText("Prom. ECR"); columnPromEcr.pa

我只想第一次对SWT表列进行排序。 我有一个带有TableViewer的表,我想在setInput方法之后或之前对programmaticaly进行排序

列是动态生成的,最后一列是平均列。 有没有办法按程序排序

我只使用这一行代码:

        columnPromEcr = new TableColumn(table, SWT.RIGHT);      
        columnPromEcr.setText("Prom. ECR");
        columnPromEcr.pack();
        columnPromEcr.setResizable(true);
        this.table.setSortColumn(columnPromEcr);
在setInput方法之后,我调用:

// refresh table
tableViewer.refresh();
table.setRedraw(true);
我需要类查看器吗


我不需要用户干预,我的数据是无序的,在创建了一个动态列之后,我希望程序使用该信息、数字数据对表格进行排序。

是的,使用ViewerSorter,它将使TableViewer始终保持有序。

如果只想在项目显示之前对其进行排序,则不需要
ViewerSorter
。使用和。

如果您想要排序的默认行为(整数、字符串简单比较),只需设置排序器:

viewer.setSorter(new ViewerSorter());

并且查看器将一直被排序(例如,在删除、添加数据之后)

我可以使用viewerSorter仅应用于一列吗?我认为最后一列(AVG)有问题,因为它不是ViewerSorter作为参数接收的对象(e1和e2)的属性。它只处理viewer的元素,所以它不是特定于列的。如果需要,您需要通过其他方式获取AVG,比如在ViewerSorter中计算AVG或将AVG存储在HashSet中。它可以工作,不幸的是,我必须在LabelProvider中复制逻辑,因此可以访问hibernate两次:(如果内存中的数据可以被排序,我会很喜欢。然后我会使用哈希表并存储数据,因为计算成本很高。视图排序器的比较方法将被频繁调用,所以每次去Hibernate会很糟糕。如果满足你的需要,你能考虑接受这个答案吗?