Java:JTable 重新排序行并刷新

标签 java jtable tablemodel

我有一个 JTable(扩展)和一个 TableModel 的实现,其中我有方法 ...

  • moveEntryUp(int rowIdx)
  • moveEntryDown(int rowIdx)

... 在表模型实现中。我已经验证这些工作正常。

但是,我在将表模型中所做的更改传播到实际的 JTable 时遇到了问题。在此表中,我只允许选择单行,并且有单独的UpDown 按钮。选择一行后,我需要能够上下移动该行,保留选择。

例如
如果我的行是 [A, B, C(selected)],然后我按下向上按钮,
我应该得到 [A, C(selected), B]

到目前为止,我尝试过的各种方法要么无法刷新 JTable 中的值,要么丢失选择。


注意:
我对使用需要显式调用 repaint() 的解决方案犹豫不决。
假设 JTable 中的所有单元格都不可编辑。

最佳答案

回答自己的问题:

int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);

mTable 是 JTable,mTableModel 是我的表模型实现,相当于 mTable.getModel()(和类型转换).

在提问之前应该多看看!

关于Java:JTable 重新排序行并刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204400/

相关文章:

java - 从java程序打开浏览器获取Google授权以询问已授予的权限

java - 如何在java中传递带有一些附加数据的自定义Throwable

java - JTable 中的 JButton 图标/动画在按下时改变

java - 为 Java 集合实现 AbstractTableModel

java - 如何在数据库操作后刷新 JTable 而无需重新加载框架?

java - 如何从表模型中获取选定的行?

java - 使用 POST 方法的 Web 服务响应 "Unsupported Media Type"

java - Keys.SHIFT 在 Mac 中工作正常,但在使用 Selenium 的 Windows 中不行

javascript - Jtable 中的列不显示

Java:如何更改 JTable 拖放 dropLine 颜色?