行 1 が行 2の位置に移動し、行 2 が行 1 の位置に移動するjTable
ように行を移動するにはどうすればよいでしょうか。
質問する
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 に答える