在jTable中移动一行

Att*_*lah 8 java swing jtable tablemodel

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

cam*_*ckr 9

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

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


LAL*_*LAL 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);
}
Run Code Online (Sandbox Code Playgroud)