2009-05-13 29 views

Respuesta

6

El modelo de tabla solo se ocupa de los datos, el modelo de selección de lista se refiere a lo que está seleccionado actualmente, por lo tanto, no puede obtener la fila seleccionada de TableModel.

13

Como MrWiggles dijo que puede obtenerlo de ListSelectionModel, al que puede acceder desde la misma tabla. Sin embargo, hay métodos de conveniencia en JTable para obtener también las filas seleccionadas. Si la tabla se puede ordenar etc también tendrá que pasar por el método convertRowIndexToModel :)

Desde el JavaDoc JTable:

int[] selection = table.getSelectedRows(); 
    for (int i = 0; i < selection.length; i++) { 
    selection[i] = table.convertRowIndexToModel(selection[i]); 
    } 
    // selection is now in terms of the underlying TableModel 
+2

Esto funcionó y debe hacerse la respuesta correcta –

+0

Ver http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html para más información. – FacundoJ

+0

¡Funciona, gracias! – Lipstick

0

Si deja que la clase del modelo implementar ListSelectionModel, así como TableModel, que será capaz de obtener una selección de un modelo ... pero no puede extender dos clases de modelo abstracto :-((Tampoco es muy buena idea ya que su clase tendrá demasiadas responsabilidades).

0

Puede obtener el índice desde la Tabla enlazada y luego puede usarla para manipular el modelo de tabla. Por ejemplo, si quiero eliminar una Fila en mi tabla Modelo:

myTableModel.removeValueAt(myTable.getSelectedRow()); 
Cuestiones relacionadas