8

如何移动一行,jTable以便row1row2的位置,而row2row1的位置?

4

3 回答 3

9

使用的moveRow(...)方法DefaultTableModel

或者,如果您不使用 DefaultTableModel,则在您的自定义模型中实现一个类似的方法。

于 2009-10-04T21:27:39.840 回答
5

这是我刚刚使用这个问题的答案开发的代码。使用这些功能,您可以一次选择多行并将它们向下或向上移动JTable。我已将这些功能附加到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);
}
于 2013-07-11T15:42:34.827 回答
0
TableModel model = jTable.getModel();
for(int col=0; col<model.getColumnCount(); col++) {
  Object o1 = model.getValueAt(row1, col);
  Object o2 = model.getValueAt(row2, col);
  model.setValueAt(o1, row2, col);
  model.setValueAt(o2, row1, col);
}
于 2009-10-04T21:24:25.647 回答