我需要一个与 TableRowSorter/DefaultRowSorter 提供的插入行为不同的 JTable。
我需要一个表格,这样当用户插入一行时,新插入的行应该低于光标所在的行,并且光标放置在新插入的行上。让我用一个例子来说明:
初始状态 - 表有 4 行:
0. Row 1
1. Row 2 <-- cursor here
2. Row 3
3. Row 4
用户的光标在第二行,用户触发插入。新插入的行出现在下面,光标也移动到那里:
0. Row 1
1. Row 2
2. New row <-- cursor here
3. Row 3
4. Row 4
我很清楚我有两种方法可以解决这个问题。
第一种方法是更改我的模型,因此插入是在模型中的正确位置完成的。我不喜欢这种解决方案,因为这意味着模型索引将在插入的行下方的所有行中发生变化。这是完成我需要的最简单的方法,但是,正如我所说,以模型索引更改引起的潜在大开销为代价......
第二种方法是实现一个 RowSorter,它将维护自己的 videToModel[] 和 modelToView[] 数组,并在插入行时保持正确的顺序。自然,我从扩展 TableRowSorter 开始,但问题是 modelToView 和 viewToModel 是私有数组,我无法访问它们,所以在过滤行时会出现问题......
我试图避免编写自己的 RowSorter 实现,因为它需要时间才能做到正确......
2013-10-07 更新: 我通过实现自己的 RowSorter 实现了这一点。在尝试了这两种方法后,我意识到第二种方法给了我更多的灵活性。