Cómo establecer un objeto personalizado en una fila JTable

Debería decir esto primero, NO se trata de renderizar una celda de tabla.

Aquí está el TableModel que estoy construyendo usando una matriz 2D basada en unUser objeto en mi base de datos.

    List<User> userList = userManagerService.getAllUsers();

    /* String[] col_user = {"Username", "Name", "Phone", .... } */
    String[][] data = new String[userList.size()][col_user.length];
    int i = 0;
    for (User user : userList) {
        String[] userdata = new String[col_user.length];
        userdata[0] = user.getUserUsername();
        userdata[1] = user.getUserName();
        userdata[2] = user.getUserPhone();
        userdata[3] = user.getUserNic();
        userdata[4] = user.getUserAddress();
        userdata[5] = user.getUserEmail();

        data[i++] = userdata;
    }

    VstTableItemModel tiModel = new VstTableItemModel(data, col_user);
    dataTable.setModel(tiModel);

Mi problema es cómo puedo conseguir unUser Objeto atrás, utilizando la fila seleccionada en la tabla. Tenga en cuenta que no puedo hacer una nuevaUser Objetar y rellenar con los datos de la fila. Debo obtener la consultaUser objeto (objetos enuserList). Entonces, ¿hay alguna forma de establecer un Objeto con una fila de tabla?

Aquí está miVstTableItemModel clase.

public class VstTableItemModel extends AbstractTableModel {

    ArrayList<Object[]> data;
    String[] header;

    public VstTableItemModel(Object[][] obj, String[] header) {
        this.header = header;
        data = new ArrayList<Object[]>();

        for (int i = 0; i < obj.length; ++i) {
            data.add(obj[i]);
        }
    }

    @Override
    public int getRowCount() {
        return data.size();
    }

    @Override
    public int getColumnCount() {
        return header.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return data.get(rowIndex)[columnIndex];
    }

    @Override
    public String getColumnName(int index) {
        return header[index];
    }

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta