No debes hacer bucles infinitos a posta y menos sin tener varios threads en la aplicacion, eso es una chapuza. En todo caso puedes tener un timer que cada x milisegundos compruebe la fila seleccionada y cambie el valor de los campos de texto de la forma que te ha dicho siva...pero sigue siendo un poco chapuza.
La forma mas eficiente es añadir un MouseListener a la tabla, de forma que cada vez que se haga clic dentro de ella, obtengas con el metodo getPoint() del MouseEvent la posicion donde se ha realizado el clic, y luego comparando esa posicion con el metodo rowAtPoint() obtener la fila en la que se ha clicado.
En el constructor:
Código:
tabla.addMouseListener(new MouseAdapter());
Fuera del constructor:
Código:
public void MouseClicked(MouseEvent e){
int row = tabla.rowAtPoint(e.getPoint());
/* row devolvera -1 si se ha clicado fuera de la fila pero dentro de la tabla, si no devolvera el indice de la fila en la que se ha clicado. */
fieldNombre.setText(tabla.getValueAt(row, 0));
fieldApellido.setText(tabla.getValueAt(row, 1));
}
Ese codigo te ha de funcionar. Un saludo!