Перемещение строки в jTable
как можно переместить строку jTable
, Так что строкой 1 идет для row2и для row2 идет строкой 1'ы ?
3 ответов
использовать moveRow(...)
метод DefaultTableModel
.
или, если вы не используете DefaultTableModel затем реализовать simliar метод в пользовательской модели.
вот мой код, который я разработал, используя ответ на этот вопрос.
С помощью этой функции вы можете выбрать несколько строк одновременно и перемещать их вверх или вниз в 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);
}
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);
}