Atualização de JTextField usando BEAN

Pessoal,
Será que alguém pode me ajudar, pois estou começando agora e estou fazendo uma Agenda de nomes, onde clico num botão com a letra e me traz os nomes e dados completos da agenda, porém ao clicar no botão abre a janela, mas não atualiza os JTextField.
Estes são os meus códigos:

public class Consultar extends Janela
{
JPanel indice;
JButton teste;

AgendaDAO agDAO;
AgendaDTO agDTO;


public Consultar()
{
    janelaConsultar();
    montaIndice();
    
    addWindowListener(new WindowAdapter()
    {
    	public void windowClosing(WindowEvent we)
    	{
    		JOptionPane.showMessageDialog(null,"A aplicação será encerrada!");
    		System.exit(0);
    	}
    });
    
    teste.addMouseListener(new Testar());
}

//metodo para contruir janela
public void janelaConsultar()
{
    setTitle("Consulta nomes");
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
 }

public void montaIndice()
{
	indice = new JPanel();
	teste = new JButton("teste");
	indice.add(teste);
	getContentPane().add(indice,BorderLayout.CENTER);
	setVisible(true);
}

class Testar implements MouseListener    
{
	public void mouseClicked(MouseEvent me) 
	{
		if(me.getSource() == teste)
		{
			try		
			{
			    agDAO = new AgendaDAO();
			    agDAO.retrieveAgenda();
			}
			catch(Exception ex)
			{
				JOptionPane.showMessageDialog(null,"Não foi possível consultar nomes!");
			}
		}
	}

	public void mouseEntered(MouseEvent arg0) {}
	public void mouseExited(MouseEvent arg0) {}
	public void mousePressed(MouseEvent arg0) {}
	public void mouseReleased(MouseEvent arg0) {}
}


//classe de evento implementando o evento MouserListener

}

//classe externa cria os BEANs
public class AgendaDTO implements Serializable
{
//atributos
private String nome;
private String end;
private String foneres;
private String fonecel;
private String fonecom;
private String email;

/*
 * cria um objeto agenda:
 * @param Nome = nome da pessoa do cadastro
 * @param End = endereço da pessoa cadastrada
 */
public AgendaDTO() {}

public AgendaDTO(String nome, String foneres)
{
	this.nome = nome;
	this.foneres = foneres;
}

public AgendaDTO(String nome, String end, String foneres, String fonecel, String fonecom, String email)
{
	this.nome = nome;
	this.end = end;
	this.foneres = foneres;
	this.fonecel = fonecel;
	this.fonecom = fonecom;
	this.email = email;
}

//retorna o nome 
public String getNome ()
{
	return nome; 
}
//altera o nome 
public void setNome(String nome)
{
	this.nome = nome;
}

//retorna o endereço
public String getEnd()
{
	return end;
}
//altera o endereço
public void setEnd(String end)
{
	this.end = end;
}

//retorna o telefone residencial
public String getFoneRes()
{
	return foneres;
}
//altera o telefone residencial
public void setFoneRes(String foneres)
{
	this.foneres = foneres;
}

//retorna o telefone celular;
public String getFoneCel()
{
	return fonecel;
}
//altera o telefone celular
public void setFoneCel(String fonecel)
{
	this.fonecel = fonecel;
}

//retorna telefone comercial
public String getFoneCom()
{
	return fonecom;
}
//altera telefone comercial
public void setFoneCom(String fonecom)
{
	this.fonecom = fonecom;
}


//retorna o email
public String getEmail()
{
	return email;
}

//altera o email
public void setEmail(String email)
{
	this.email = email;
}

}//fim da classe

//classe externa que cria o DAO
public void retrieveAgenda() throws SQLException
{
//criação do objeto PreparedStatement
PreparedStatement psmt = null;
//criação do objeto ResultSet
ResultSet rs = null;

    try
    {
    	super.connect();
    	//cria vetor para receber resultado da consulta
    	Vector<Object[]> nomes = new Vector<Object[]>();

   		//abre espaço para a declaração utilizando o objeto con
   		psmt = con.prepareStatement(QSELECTFNOME);
   		
   		//executa a consulta e obtém um Result
   		rs = psmt.executeQuery();
   		//cria o objeto metadata para solicitar cursor rolável
   		ResultSetMetaData rsmd = rs.getMetaData();

   		//cria vetor para receber nome da coluna            
   		String[] col = {"Nomes"};

   		while (rs.next()) 
   		{
   			System.out.println("Consulta realizada com sucesso!");
   			//obtém dados das colunas da tabela pelo ResultSet
   			Object[] celula = new Object[rsmd.getColumnCount()];
   			for(int j=0;j<rsmd.getColumnCount();++j)
   			celula[j] = rs.getString("nome");
   			nomes.add(celula);
   		}
   		Object[][] lin = (Object[][])nomes.toArray(new Object[0][0]);
   		       		
   		new GradeNomes().setDadosGrade(new DefaultTableModel(lin,col));
   		
   	} 
    catch (SQLException sqlex) 
    {
        //se não encontrar gera exceção de erro
        throw new SQLException("Falha:" + sqlex.getMessage());
    } 
    catch (Exception Ex)//captura falha geral
    {
        //se não encontrar gera exceção de erro
        throw new SQLException("Falha geral!\n" + Ex);
    } 
    finally 
    {
        try 
        {
            //fecha recursos abertos anteriormente
            if (psmt != null) 
            {
                psmt.close();
            }
            if (rs != null) 
            {
                rs.close();
            }
        }
        catch (Exception E) 
        {
            E.printStackTrace();
        }
    }
}// fim do método retrieveAgendaDAO

//método para consulta de dados
public AgendaDTO retrieveAgendaFullDAO(String vnome) throws SQLException 
{
	//verifica se nome é nullo
    if (vnome == null) {
        throw new SQLException("Nome do cliente não pode ser nulo!");
    }

    //criação do objeto PreparedStatement
    PreparedStatement psmt = null;
    //criação do objeto ResultSet
    ResultSet rs = null;

    try 
    {
    	super.connect();
    	//abre espaço para a declaração utilizando o objeto con
   		psmt = con.prepareStatement(QSELECT);

        //passa parâmetro para PreparedStatement
        psmt.setString(1,vnome);

   		//executa a consulta e obtém um Result
   		rs = psmt.executeQuery();
   		
   		while(rs.next())
   		{
   			return new AgendaDTO(rs.getString("nome"),rs.getString("end"), rs.getString("foneres"), rs.getString("fonecel"), rs.getString("fonecom"), rs.getString("email"));
   		}
   		
   	} 
    catch (SQLException sqlex) 
    {
        //se não encontrar gera exceção de erro
        throw new SQLException("Falha na pesquisa do nome!" + sqlex);
    } 
    catch (Exception Ex)//captura falha geral
    {
        //se nÃo encontrar gera exceção de erro
        //throw new SQLException("Falha geral!\n" + Ex.getCause());
    	Ex.printStackTrace();
    } finally {
        try {
            //fecha recursos abertos anteriormente
            if (psmt != null) 
            {
                psmt.close();
            }
            if (rs != null) 
            {
                rs.close();
            }
        } catch (Exception E) 
        {
            E.printStackTrace();
        }
    }
	return null;
	
}// fim do método retrieveAgendaDAO

//classe externa que monta a janela com a grade com os nomes existentes na agenda e executa a abertura dos dados completos
public class GradeNomes extends Janela implements MouseListener
{
//atributos da janela
JTable tabnomes;
JLabel status = new JLabel(“Selecione um registro para visualizar os detalhes.”);
JPanel p0;

AgendaDAO agDAO;
AgendaDTO agDTO;
 
DefaultTableModel tab = new DefaultTableModel();

public GradeNomes()
{
	janelaGrade();
	montaGradeNomes();
	setDadosGrade(tab);
	
	
	addWindowListener(new WindowAdapter()
	{
		public void windowClosing(WindowEvent we)
		{
			JOptionPane.showMessageDialog(null,"A janela será fechada!");
			System.exit(0);
		}
	});
}


public void janelaGrade()
{
    setTitle("Lista de nomes");
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}


public void montaGradeNomes() 
{
   	tabnomes = new JTable();
   	tabnomes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    tabnomes.setCursor(new Cursor(Cursor.HAND_CURSOR));
    tabnomes.setFocusable(true);
    tabnomes.setToolTipText("Nomes agendados");
    p0 = new JPanel();
    tabnomes.addMouseListener(this);
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(new JScrollPane(tabnomes), "East");
    getContentPane().add(status,"South");
    getContentPane().add(p0,"West");
    
}

public void setDadosGrade(DefaultTableModel tab) 
{
	tabnomes.setModel(tab);
	setVisible(true);
}


public void mouseReleased(MouseEvent me)	 
{
	if(me.getButton() != MouseEvent.BUTTON1) return;
	if(!(me.getSource() instanceof JTable)) return;
	
	JTable tb = (JTable)me.getSource();
	if(tb.getSelectionModel().isSelectionEmpty()) return;
	
	int i = tb.getSelectionModel().getMinSelectionIndex();
	
	try 
	{
		String nom = (String) tb.getModel().getValueAt(i,0);
		try 
		{
			agDAO = new AgendaDAO();
			agDTO = agDAO.retrieveAgendaFullDAO(nom);
			new GradeTdNomes();
			
		}
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		
	} 
	catch (ClassNotFoundException e) 
	{
		
		e.printStackTrace();
	}

}

public void mouseClicked(MouseEvent me){}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}

}

–Até aqui ele roda perfeitamente, lança os dados no Bean do DTO,porém ao montar a tela para mostrar os dados ocorre que não traz as informações para o JTextField, extamente pq ao executar o Bean, traz as informações nulas.

//classe externa para a construção da janela com os dados completos
public class GradeTdNomes extends Janela //implements MouseListener
{
//atributos da janela
JTable tabtdnomes;
JPanel p1, p2;
JLabel lbnome, lbend, lbfoneres, lbfonecel, lbfonecom, lbemail;
JTextField txtnome, txtend, txtfoneres, txtfonecel, txtfonecom, txtemail;

AgendaDTO agDTO;

public GradeTdNomes()
{
  	janelaGrade2();
	montaJanelaTdNomes();
   	setVisible(true);

	addWindowListener(new WindowAdapter()
	{
		public void windowClosing(WindowEvent we)
		{
			JOptionPane.showMessageDialog(null,"A janela será fechada!");
			System.exit(0);
		}
	});
}

 public void janelaGrade2()
{
    setTitle("Dados Completo");
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

public void montaJanelaTdNomes() 
{
   	getContentPane().setLayout(new BorderLayout());
    
	JPanel p0 = new JPanel();
	p0.setLayout(new GridLayout(1,1,30,30));
	p0.add(new JLabel("     "));
	
   	p1 = new JPanel();
    p1.setLayout(new GridLayout(6,2,10,10));
    p1.add(new JLabel(""));
    p1.add(new JLabel("NOME:           "));
    p1.add(new JLabel(""));
    p1.add(new JLabel("ENDEREÇO:       "));
    p1.add(new JLabel(""));
    p1.add(new JLabel("FONE RESIDÊNCIA:"));
    p1.add(new JLabel(""));
    p1.add(new JLabel("FONE CELULAR:   "));
    p1.add(new JLabel(""));
    p1.add(new JLabel("FONE COMERCIAL: "));
    p1.add(new JLabel(""));
    p1.add(new JLabel("E-MAIL:         "));
    
    txtnome = new JTextField(50);
	txtend = new JTextField(100);
	txtfoneres = new JTextField(15);
	txtfonecel = new JTextField(15);
	txtfonecom = new JTextField(15);
	txtemail = new JTextField(100);
    
	JPanel p2 = new JPanel();
	p2.setLayout(new GridLayout(6,1,10,10));
	p2.add(txtnome);
	p2.add(txtend);
	p2.add(txtfoneres);
	p2.add(txtfonecel);
	p2.add(txtfonecom);
	p2.add(txtemail);        

	
	agDTO = new AgendaDTO();
	txtnome.setText(agDTO.getNome());
	txtend.setText(agDTO.getEnd());
	txtfoneres.setText(agDTO.getFoneRes());
	txtfonecel.setText(agDTO.getFoneCel());
	txtfonecom.setText(agDTO.getFoneCom());
	txtemail.setText(agDTO.getEmail());
	
	
	JPanel p3 = new JPanel();
	p3.setLayout(new GridLayout(3,4,20,20));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	//p3.add(bincluir);
	p3.add(new JLabel(""));
	//p3.add(bcancelar);
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	p3.add(new JLabel(""));
	
	JPanel p4 = new JPanel();
	p4.setLayout(new GridLayout(1,1,50,50));
	p4.add(new JLabel("                                         "));

    getContentPane().add(p0,"North");
    getContentPane().add(p1,"West");
    getContentPane().add(p2,"Center");
    getContentPane().add(p3,"South");
    getContentPane().add(p4,"East");

}
}

procure colocar seu código entre as tags [code]