繁体   English   中英

在DefaultListModel中更改元素位置

[英]Changing element location in DefaultListModel

我正在使用DefaultListModel 我需要将所选项目移动到列表中的第一个或最后一个(而不是上下)位置。 如何在不交换的情况下在DefaultListModel中的第一个或最后一个位置移动所选项目?

我猜您遇到的问题是,当您单击“向上”或“向下”按钮时,该项目将移动,但是由于您从列表中将其删除,然后再次添加,因此不再选择该项目。 列表选择模型处理“删除”事件并清除其选择,因为已删除所选项目。

我知道有两种方法可以解决此问题,而这两种方法都很优雅:

  1. 进行“移动”操作还会更新选择模型,以保持相同的项目处于选中状态。
  2. 通过将其保留在列表中并移动所有其他项目来移动该项目。 因此,如果列表为[1、2、3、4],并且您想将3移到开头,请首先删除1和2以得到[3,4],然后将它们重新添加到索引1以得到[3]。 ,1,2,4]。 (这利用了选择模型在添加和删除事件时更新所选索引的事实)

我通常使用(2),因为尽管它需要做更多的工作,但它允许移动逻辑仅处理列表模型而不处理选择模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM