0

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

我可以看到以下方式:

  1. 一种直接的方法是将它们放入 arraylist 并通过 Comparator 排序,但是在添加新元素后,我们必须从容器中删除所有列表并以新顺序再次添加它们。
  2. 使用一些分类容器。我只为此找到了 CellTable。但实际上我不需要它丰富的功能——我只有一列,不需要对用户事件进行排序,只有在添加或删除新元素时——所以我的用例中还有其他东西可以利用吗?

GWT 2.4

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

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

4

1 回答 1

1

添加新小部件后,没有直接的方法可以重新排序 DOM 中的元素。附加小部件后,您不能仅移动它们(更改它们在文档结构中的位置)而不分离和重新附加。好吧,使用绝对定位,您只需更改左上角坐标即可移动项目,如果您需要的话。

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

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

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

于 2012-08-31T18:39:22.157 回答