8

行 1 が行 2の位置に移動し、行 2 が行 1 の位置に移動するjTableようにを移動するにはどうすればよいでしょうか。

4

3 に答える 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 に答える