How can one move a row in jTable
so that row1 goes to row2's position and row2 goes to row1's position ?
Use the moveRow(...)
method of the DefaultTableModel
.
Or, if you aren't using the DefaultTableModel then implement a simliar method in your custom model.
Here is my code that I've just developed using the answer in this question.
With those function you can select multiple rows at a time and move them down or up in a JTable
. I've attached those function to JButton
, but i clean them out to make them more readable.
The last code line of both method (setRowSelectionInterval()
) is used to follow the selection on the row being moved, since moveRow()
doesn't move the selection but the content of the row.
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With