【问题标题】:Changing element location in DefaultListModel更改 DefaultListModel 中的元素位置
【发布时间】:2012-03-07 10:57:55
【问题描述】:

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

【问题讨论】:

  • 你忘记作业标签了吗:-)
  • 删除项目并插入到所需位置?

标签: java swing defaultlistmodel


【解决方案1】:

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

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

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

我一般都用(2),因为虽然工作量有点大,但是它允许移动逻辑只处理列表模型而不是选择模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多