2009-10-04 108 views

Respuesta

9

utilizan el método de la DefaultTableModelmoveRow(...).

O, si usted no está utilizando el DefaultTableModel luego implementar un método simliar en su modelo personalizado.

+0

gracias. ¿Puedes proporcionar un fragmento de código, por favor? – Attilah

+0

No noté que había un enlace. ha sido útil. Gracias. – Attilah

+0

este enlace está desactualizado –

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); 
} 
2

Aquí está mi código que simplemente he desarrollado utilizando la respuesta en esta pregunta. Con los función puede seleccionar varias filas a la vez y moverlos hacia arriba o abajo en un JTable. Adjunté esas funciones al JButton, pero las limpie para hacerlas más legibles.

La última línea de código de ambos métodos (setRowSelectionInterval()) se usa para seguir la selección en la fila que se mueve, ya que moveRow() no mueve la selección, sino el contenido de la fila.

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); 
} 
Cuestiones relacionadas