java - 更改 DefaultListModel 中的元素位置

标签 java swing defaultlistmodel

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

最佳答案

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

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

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

我通常使用(2),因为虽然它的工作量更大一些,但它允许移动逻辑只处理列表模型而不是选择模型。

关于java - 更改 DefaultListModel 中的元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600166/

相关文章:

java - 如何清除 StyledDocument 中的所有样式?

java - 使用 Apache PDFBox 阅读 pdf

java - 将元素添加到 DefaultListModel 时 JList 不更新

java - 无法将我的 DefaultListModel 分配给 Java NetBeans 中的 JList

java - 修改 DefaultListModel 中的元素不更新模型

java - 如何将 FocusTraversalPolicy 与 MigLayout 结合使用?

java - 如何在 JavaFX 项目中使用 KeyEvent?

java - JTable标题背景颜色

java - 在一帧中显示消息对话框警告和信息消息类型

java - 阻止新创建的对话框获得焦点