Вот мой код, который я только что разработал, используя ответ на этот вопрос.
С помощью этой функции вы можете выбрать несколько строк за раз и переместить их вниз или вверх на 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);
}