如何在GWT中对小部件进行排序?

时间:2012-08-31 15:49:13

标签: gwt sorting

我有一个需要排序的小部件列表。我想为这些小部件列表创建一个容器,以便在每次添加新小部件时对它们进行重新排序。我该怎么办?

我可以看到以下方式:

  1. 一种简单的方法是将它们放入arraylist并通过Comparator进行排序,但在添加新元素之后,我们必须从容器中删除所有列表并以新的顺序再次添加它们。
  2. 使用一些分拣容器。我发现只有CellTable。但实际上我不需要它的丰富功能 - 我只有一个列,不需要对用户事件进行排序,只有当添加或删除新元素时, - 那么我可以在我的用例中使用其他东西吗?
  3. GWT 2.4

    PS 实际上,我正在寻找一些东西,可以表达为“由小部件集合支持的小部件容器”,即我更改集合 - 容器更改其内容,我如何实现它,或者我在哪里可以找到它?

    PPS 小部件可能不同,这就是为什么我不认为我可以轻松使用CellTable。

1 个答案:

答案 0 :(得分:1)

添加新窗口小部件后,没有直接的方法可以重新排序DOM中的元素。 附加小部件后,您无法移动它们(更改其在文档结构中的位置)而无需分离和重新附加。 那么,通过绝对定位,您可以更改左上角坐标来移动项目,如果它是您需要的。

当我必须对TreeItem元素进行排序时,我遇到了类似的问题(没有可用的内置排序方法)。作为一种解决方法,我将所有子项读入列表并同时从父窗口小部件中删除它们,然后使用Comparator对这些项目进行排序,并将它们从排序列表中添加回父项。所有东西都在一个sort()方法中,它封装了所有必需的功能,简化了对这段代码的理解。

  

“小部件集合支持的小部件容器”

我想了解一个类似的东西,它也可以动态排序和重新附加。但它仍然会得到我假设的相同分离支持。我建议你自己写一个,以满足你的特殊需求。您需要树或FlowPanel或其他任何东西 - 您可以扩展它并根据上下文添加sort()逻辑。并相应地覆盖add()方法。所以,你的第一个选择对我来说似乎是一个可能的解决方案。