Como definir um objeto personalizado em uma linha JTable

Eu deveria dizer isso primeiro, isso não é sobre como renderizar uma célula da tabela.

Aqui está o TableModel que estou construindo usando um array 2D baseado em umUser objeto no meu banco de dados.

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

Meu problema é como posso obter umUser objeto de volta, usando a linha selecionada na Tabela. Note que eu não posso fazer um novoUser objeto e preenchê-lo com os dados da linha. Eu preciso pegar o questionadoUser objeto (objetos emuserList). Então, é sua maneira de definir um objeto com uma linha de tabela?

Aqui está o meuVstTableItemModel classe.

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];
    }

}

questionAnswers(1)

yourAnswerToTheQuestion