在jTable中移动一行

如何在jTable移动一行,以便row1进入row2的位置, row2进入row1的位置?

使用DefaultTableModelmoveRow(...)方法。

或者,如果您不使用DefaultTableModel,则在自定义模型中实现simliar方法。

这是我刚刚使用此问题中的答案开发的代码。 使用这些function,您可以一次选择多行,并在JTable向下或向上移动它们。 我已将这些function附加到JButton ,但我清理它们以使它们更具可读性。

两个方法的最后一个代码行( setRowSelectionInterval() )用于跟踪正在移动的行的选择,因为moveRow()不会移动选择而是移动行的内容。

 public void moveUpwards() { moveRowBy(-1); } public void moveDownwards() { moveRowBy(1); } private void moveRowBy(int by) { DefaultTableModel model = (DefaultTableModel) table.getModel(); int[] rows = table.getSelectedRows(); int destination = rows[0] + by; int rowCount = model.getRowCount(); if (destination < 0 || destination >= rowCount) { return; } model.moveRow(rows[0], rows[rows.length - 1], destination); table.setRowSelectionInterval(rows[0] + by, rows[rows.length - 1] + by); } 
 TableModel model = jTable.getModel(); for(int col=0; col