Ajuda, listando contatos

1 resposta
leandrosu

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

Classe Contato

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());
    	
    }
    */
   
}

classe Agenda

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

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

1 Resposta

Mantu

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");
	}
Criado 12 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 1
Participantes 2