jTable + mouseClicked()

Tenho uma jTable (codigo no final) definida como

public class SimpleTableModel extends AbstractTableModel

Observem no codigo do mouseClicked() que

System.out.println("Pos: " + jTDomicilio.getSelectedRow());//NÃO FUNCIONA

não funciona, pois sempre devolve -1, e

System.out.println("Pos: " + jTDomicilio.rowAtPoint(new Point(e.getX(), e.getY())));//FUNCIONA

funciona perfeitamente, devolvento a linha correspondente.

Quando poderei saber qual método deverá ser usado e quando?

    private JTable getJTDomicilio() {
        if (jTDomicilio == null) {
            try {                
                
                String[] colunas = new String[] { "Nome", "Tipo", "Número",
                        "Complemento", "Tel. Contato", "Celular" };
                                
                listaDomicilio = null;
                listaDomicilio = loadjDomicilio(locCodigo, baiCodigo, logCodigo);
                
                TabelaDomicilio modelo = new TabelaDomicilio(listaDomicilio, colunas);                               
                jTDomicilio = new JTable(modelo);
                
                jTDomicilio.setBackground(java.awt.SystemColor.inactiveCaptionText);
                jTDomicilio.setFont(new java.awt.Font("Verdana",
                        java.awt.Font.PLAIN, 10));
                jTDomicilio.setShowGrid(true); 
                jTDomicilio.setShowHorizontalLines(true); 
                jTDomicilio.setShowVerticalLines(true);
                //MARCA A PRIMEIRA LINHA DA TABELA
                //jTDomicilio.changeSelection(0,1,false,false);
                jTDomicilio.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);                
                /*ListSelectionModel rowSM = jTDomicilio.getSelectionModel();
                rowSM.addListSelectionListener(new ListSelectionListener() {
                  public void valueChanged(ListSelectionEvent e) {
                      //Ignore extra messages.
                      if (e.getValueIsAdjusting()) return;
                      ListSelectionModel lsm = (ListSelectionModel) e.getSource();
                      if (!lsm.isSelectionEmpty()) {
                        int selectedRow = lsm.getMinSelectionIndex();
                        System.out.println("Domicilio1..." + (selectedRow + 1));
                        try {
                            rsDomicilio.absolute(selectedRow + 1);
                            System.out.println(selectedRow + " " + rsDomicilio.getInt("dom_codigo"));
                            domCodigoPar = rsDomicilio.getInt("dom_codigo");                            
                            getJTUnidade(domCodigoPar);
                        } catch (SQLException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }                         
                      }
                  }
                });  */             
                jTDomicilio.addMouseListener(new java.awt.event.MouseAdapter() { 
                	public void mouseClicked(java.awt.event.MouseEvent e) {    
                		System.out.println("mouseClicked()"); // TODO Auto-generated Event stub mouseClicked()
                		System.out.println("Pos: " + jTDomicilio.getSelectedRow());//NÃO FUNCIONA
                		System.out.println("Pos: " + jTDomicilio.rowAtPoint(new Point(e.getX(), e.getY())));//FUNCIONA
                	}
                });
                System.out.println("Domicilio2...");
                //getJTUnidade();

            } catch (java.lang.Throwable e) {
                // TODO: Something
            }
        } else {
            ((TabelaDomicilio)jTDomicilio.getModel()).removeAllRow();           
            
            listaDomicilio = null;
            listaDomicilio = loadjDomicilio(locCodigo, baiCodigo, logCodigo);
            ((TabelaDomicilio)jTDomicilio.getModel()).setLinhas(listaDomicilio);
            ((TabelaDomicilio)jTDomicilio.getModel()).fireTableDataChanged();
        }
        
        return jTDomicilio;
    }

Não tenho certeza, mas talvez o listener seja disparado antes do evento de seleção. Adicione um selection listener para resolver seu problema.