如何移动一行,jTable
以便row1到row2的位置,而row2到row1的位置?
问问题
12759 次
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 回答