在DefaultListModel中更改元素位置

时间:2012-03-07 10:57:56

标签: java swing defaultlistmodel

我正在研究DefaultListModel。我需要将所选项目移动到列表中的第一个或最后一个(不是向上和向下)位置。如何在第一个或最后一个位置移动DefaultListModel中的所选项目而不进行交换?

1 个答案:

答案 0 :(得分:1)

我猜你遇到的问题是,当你点击“向上”或“向下”按钮时,项目会移动,但是因为你从列表中删除它然后再添加它,它就是选择时间更长列表选择模型处理“删除”事件并清除其选择,因为删除了所选项目。

我知道有两种方法可以解决这个问题,两者都不合适:

  1. 让您的“移动”操作也更新选择模型以保持选择相同的项目。
  2. 通过将项目保留在列表中并移动所有其他项目来移动项目。所以,如果列表是[1,2,3,4]并且你想将3移动到开头,首先删除1和2得到[3,4],然后将它们添加回索引1以获得[3] ,1,2,4]。 (这使用选择模型在添加和删除事件时更新所选索引的事实)
  3. 我通常使用(2),因为虽然它有点工作,它允许移动逻辑只处理列表模型而不是选择模型。