Ajuda, listando contatos

Bom noite Galera,

Bom pessoal minha primeira pergunta aqui no forum.
Comecei a estudar java faz pouco tempo, estou desenvolvendo uma agenda de contatos, estou com dificuldades de listar os contatos ja incluidos.

estou utilizando o banco “db40”

bom ai vao as classes

Classe AchaAmigo

[code]package agenda1;
import com.db4o.*;
import javax.swing.JOptionPane;

public class AchaAmigo extends javax.swing.JFrame {

static Agenda ag;
static ObjectContainer bd; 

public AchaAmigo() {
    initComponents();
}
public void abrirAgenda(){

ag = new Agenda();
try{
JOptionPane.showMessageDialog(this,“ABRE”);
bd = Db4o.openFile(“Agenda.yap”);
ObjectSet r = bd.get(ag);
if (r.hasNext()){
ag = (Agenda)r.next();
}

	}catch (Exception e){
			
	}

}

public void salvarAgenda(){
try{
JOptionPane.showMessageDialog(this,“FEchA”);
bd.set(ag);
bd.commit();
}catch (Exception e){

}

}

// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
    jTFNome = new javax.swing.JTextField();
    jTFTelefone = new javax.swing.JTextField();
    jBMostra = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTAMostra = new javax.swing.JTextArea();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jBMostra.setText("mostra");
    jBMostra.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBMostraActionPerformed(evt);
        }
    });

    jTAMostra.setColumns(20);
    jTAMostra.setRows(5);
    jScrollPane1.setViewportView(jTAMostra);

    org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
        .add(layout.createSequentialGroup()
            .add(146, 146, 146)
            .add(jBMostra)
            .addContainerGap(189, Short.MAX_VALUE))
        .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
            .add(66, 66, 66)
            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)
                .add(org.jdesktop.layout.GroupLayout.LEADING, jTFTelefone, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)
                .add(org.jdesktop.layout.GroupLayout.LEADING, jTFNome, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE))
            .add(103, 103, 103))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
        .add(layout.createSequentialGroup()
            .addContainerGap()
            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
            .add(25, 25, 25)
            .add(jTFNome, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
            .add(18, 18, 18)
            .add(jTFTelefone, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
            .add(36, 36, 36)
            .add(jBMostra)
            .addContainerGap(61, Short.MAX_VALUE))
    );
    pack();
}// </editor-fold>

////////////////////////////////////////////////////////////////////////
// creio q a dificuldade possa estar aqui.

private void jBMostraActionPerformed(java.awt.event.ActionEvent evt) {

    abrirAgenda();

    Contato[] c = ag.retornaTodos();
   // JOptionPane.showMessageDialog(this, "To antes  do laço.....");
    
	for (int i=0; i<200; i++){
	  if (c[i] !=null) { 
		jTFTelefone.setText(c[i].retornarNome()); 	
      }
    }
       
            
    salvarAgenda();
}                                     

///////////////////////////////////////////////////////////////////////////////

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new AchaAmigo().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JButton jBMostra;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTAMostra;
private javax.swing.JTextField jTFNome;
private javax.swing.JTextField jTFTelefone;
// End of variables declaration

}
[/code]

Classe Contato

[code]package agenda1;
public class Contato {

protected String email, telefone, endereco, cep, nome, cidade;// variaveis
protected Data nascimento = new Data();// atributo definido na classe Data

//cria os metodos

public Familiar toFamiliar(){
	Familiar f = new Familiar();
	f.alterarNome(nome);
	f.alterarEndereco(endereco);
	f.alterarTelefone(telefone);
	f.alterarCidade(cidade);
	f.alterarEmail(email);
	f.alterarCep(cep);
	f.alterarNascimento(nascimento);
	return f;
}

    public Amigo toAmigo(){
	Amigo f = new Amigo();
	f.alterarNome(nome);
	f.alterarEndereco(endereco);
	f.alterarTelefone(telefone);
	f.alterarCidade(cidade);
	f.alterarEmail(email);
	f.alterarCep(cep);
	f.alterarNascimento(nascimento);
	return f;
}

    public Comercial toComercial(){
	Comercial f = new Comercial();
	f.alterarNome(nome);
	f.alterarEndereco(endereco);
	f.alterarTelefone(telefone);
	f.alterarCidade(cidade);
	f.alterarEmail(email);
	f.alterarCep(cep);
	f.alterarNascimento(nascimento);
	return f;
}





public void alterarEmail(String e){
	email = e;
}

public void alterarTelefone(String t){
	telefone = t;
}

public void alterarEndereco(String e){
	endereco = e;
}

public void alterarCep(String c){
	cep = c;
}

public void alterarNome(String n){
	nome = n;
}

public void alterarCidade(String c){
	cidade = c;
}

public void alterarNascimento(Data d){
	nascimento = d;
}

public void alterarNascimento(int d, int m, int a){
	Data dat = new Data();
	dat.alterarDia(d);
	dat.alterarMes(m);
	dat.alterarAno(a);
	nascimento = dat;
}

public String retornarEmail(){
	return email;
}

public String retornarTelefone(){
	return telefone;
}

public String retornarEndereco(){
	return endereco;
}

public String retornarCep(){
	return cep;
}

public String retornarNome(){
	return nome;
}

public String retornarCidade(){
	return cidade;
}

public Data retornarNascimento(){
	return nascimento;
}

public String qualSeuTipo(){
	String retorno =  "Sou um Contato";
	return retorno;
}
//main de teste
/*
public static void main(String[] args){
	Contato c = new Contato();
	c.alterarNome("Paulo Costa");
	Data d = new Data();
	d.alterarData(24,06,2001);
	c.alterarNascimento(d);
	   
 System.out.println(c.retornarNome());
 System.out.println(c.retornarNascimento().retornarDataInteira());
	
}
*/

}[/code]

classe Agenda

[code]package agenda1;

public class Agenda {
protected String usuario, senha, nomeDono;
protected Contato[] c = new Contato[200];

public void alteraUsuario(String u){
	usuario = u;
}
public String retornaUsuario(){
	return usuario;
}
public void alteraSenha(String s){
	senha = s;
}
public String retornaSenha(){
	return senha;
}
public void alteraNomeDono(String d){
	nomeDono = d;
}
public String retornaNomeDono(){
	return nomeDono;
}
public Contato[] retornaTodos(){
	return c;
}
public boolean inserirContato(Contato con){  //insere um tipo Contato  todo no array
	int i = 0;
	while ((c[i] != null)&&(i<200)) i++;    //varre o vetor buscando uma posição vazia
	if(i<200){                              //contador for menor que 200, insere
		c[i] = con;
	    return true;                        //se conseguiu inserir
	}  
	return false;                           //não inseriu	
}

public boolean inserirContato(String nome,String email,String telefone,String endereco,
String cep,String cidade,String historico,Data d){

	Amigo a = new Amigo();
	a.alterarNome(nome);
	a.alterarEndereco(endereco);
	a.alterarEmail(email);
	a.alterarTelefone(telefone);
	a.alterarCidade(cidade);
	a.alterarCep(cep);
	a.alterarHistorico(historico);
	a.alterarNascimento(d);
	boolean r = inserirContato(a);   //insere todo contato em r
	return r;                        // retorna com a inserçaõ foi afetuada true ou false
									  	
}

public boolean inserirContato(String nome, String email, String telefone, String endereco,
							  String cep, String cidade, Data d, String cargo, String empresa){
							  
	Comercial com = new Comercial();
	com.alterarNome(nome);
	com.alterarEmail(email);
	com.alterarTelefone(telefone);
	com.alterarEndereco(endereco);
	com.alterarCep(cep);
	com.alterarCidade(cidade);
	com.alterarNascimento(d);
	com.alterarCargo(cargo);
	com.alterarEmpresa(empresa);
	boolean r = inserirContato(com);
	return r;						  	
							  	
}

public boolean inserirContato(String nome, String email, String telefone, String endereco,
							  String cep, String cidade, Data d, String parentesco){
							  
	Familiar f = new Familiar();
	f.alterarNome(nome);
	f.alterarEmail(email);
	f.alterarTelefone(telefone);
    f.alterarEndereco(endereco);
	f.alterarCep(cep);
	f.alterarCidade(cidade);
	f.alterarNascimento(d);
	f.alterarParentesco(parentesco);
	boolean r = inserirContato(f);
	return r;						  	
							  	
}    
	
	

public boolean excluirContato(String n){
	for(int i=0; i<200; i++){                //varre todo vetor
        if (c[i]!=null){   	
		  Contato con = c[i];                //passa os valores do array para uma variavel
		  String nome = con.retornarNome();  //passa para a variavel nome abusca do metodo 
		  if (nome.equals(n)){               // equals compara Strings 
			  c[i]=null;                     //insere null 
			  return true;
		  } 
        }	  		
	}
	return false;
}

public boolean excluirContato(Contato con){   //passa o Contato inteiro
	for(int i=0; i<200; i++){                 //percorre o laço
		if(c[i]==con){                        //testa
			c[i]=null;
			return true;
		}
	
	}
	return false;
} 

public Contato buscarContato(String n){
for (int i=0; i<200; i++){
if (c[i]!=null)
if (c[i].retornarNome().equals(n)){
return c[i];
}
}
return null;
}

public Contato[] buscarPorTipo(String t){
Contato ctemp[] = new Contato[200];
int i=0;
for(int j=0; j<200; j++){
if (c[j]!=null){
Contato con = c[j];
String tipo = con.getClass().toString();
if(tipo.equals(t)){
ctemp[i] = con;
i++;
}

		}
	} 	
return ctemp;//retorna um array inteiro

}

public Contato[] retornarAniversariante(int mes){
Contato[] ctemp = new Contato[200];
int i = 0;
for (int j=0; j<200;j++){
if (c[j]!=null){
Contato con = c[j];
Data d = con.retornarNascimento();
if (d.ehAniversariante(mes)){
ctemp[i] = con;
i++;
}
}
}
return ctemp; //retorna um array inteiro
}

}[/code]

bom … compilo e rodo o programa sem problema, so que qdo peço para listar os contatos…
O “sem vergonha” nao lista nada…
alguem tem a solucao ?

desde ja grato
abs leandrosu

Olá leandrosu! Bem vindo ao GUJ!

Tente verificar primeiro se a referência ag não chega aqui com null. Depois, verifique também, antes de entrar no for, se o seu vetor de objetos Contato não está vazio.
Uma coisa que estou achando estranho é que vc itera sobre esse vetor e, a cada posição, vc troca o texto exibido pelo seu jTFTelefone. Desse jeito, o seu campo de texto vai sempre mostrar o último contato armazenado pelo vetor c.
Faça estes testes - veja o código abaixo - e volte a postar aqui. Derrepente o problema pode estar nos dados armazenados no bd.

	private void jBMostraActionPerformed(java.awt.event.ActionEvent evt) {                                         
		abrirAgenda();
		if(ag != null){
			Contato[] c = ag.retornaTodos();
			if(c.length > 0) {
				for (int i=0; i<200; i++){
					if (c[i] !=null) { 
				    	jTFTelefone.setText(c[i].retornarNome());
				    }
				}
				salvarAgenda();
			}else
				JOptionPane.showMessageDialog(this, "Nenhum contato para esta Agenda");
		}else
			JOptionPane.showMessageDialog(this, "Agenda não definida");
	}