HashMap em Agenda - Consultar

17 respostas
T

Bom dia pessoal,

Sou iniciante em java, e estou desenvolvendo uma agenda no Netbeans. Estou fazendo um botão Consultar com HashMap.

Gostaria de saber como fazer o JTextfield receber o valor do mapa no HashMap.
Criei um JButton Consultar e dois TextFields…

Aqui esta uma parte do código Consultar:

public class Consultar extends javax.swing.JFrame {

private String nome;

private String email;
public Consultar() {
    initComponents();
}

HashMap map=new HashMap();

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
Consultar contato=new Consultar();

contato.setNome(jTextField1.getText());
map.put(“Tiago”,“1234”);

if (map.get(contato.getNome()) != null) {
        System.out.println("Esse nome já esta cadastrado!");
        jTextField1.setText(" ");
        jTextField2.setText(" ");
    }

    for(Iterator it = map.keySet().iterator(); it.hasNext() ;) {
        Object chave = it.next();
        Object valor = map.get(nome);
        System.out.println(getNome()+"="+getNome());
    }
public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Consultar().setVisible(true);

}

});

}
public String getNome() {
        return nome;
    }
    
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    
// Declaração de variáveis - não modifique                     
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JToggleButton jToggleButton1;
// Fim da declaração de variáveis                   

}

Alguém poderia me ajudar, por favor?

Obrigado!!

17 Respostas

rubinelli

Oi Tiago, bem vindo ao GUJ!

Pra começar, deixa eu ver se entendi o que você quer fazer aqui. Você tem um JFrame Consultar, com dois textboxes e um botão. Essa classe Consultar também tem um HashMap que vai guardar uma lista de telefones. Quando você clicar no botão, ela vai verificar o que está no texbox 1, tentar encontrar no HashMap esse valor, e se achar, exibir no textbox 2.

Se for isso mesmo, então a primeira coisa que a gente pode fazer é remover aqueles atributos nome e email e os métodos de acesso (gets e sets). Eles não estão nos servindo para nada. A segunda coisa é mover a inicialização do map para o construtor do Consultar:

public Consultar() {
  map.put("Tiago","1234");
  initComponents();
}

A última coisa é olhar o que o click do botão está fazendo no momento. Não é o que você queria. Veja isso:

if (map.get(contato.getNome()) != null) { System.out.println("Esse nome já esta cadastrado!"); jTextField1.setText(" "); jTextField2.setText(" "); }
Esse código estaria correto se você quisesse cadastar um valor, não consultá-lo! O que você poderia escrever no lugar seria algo assim:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
  String numero =  map.get(jTextField1.getText());
  if (numero != null) {
    jTextField2.setText(numero);
  } else {
    jTextField2.setText("não encontrado");
  }
}

E por último, aqui vão duas dicas: Comece com programas puro-texto até você se sentir confiante, porque programas com interface gráfica no Java adicionam uma porção de conceitos complicados de que você não precisa no momento. E use sempre tags CODE para marcar o seu código Java, pois assim fica mais fácil de ler e te ajudar.

EDIT: uma coisa que faltou falar foi que você deveria alterar a inicialização do seu HashMap para incluir o tipo:

Map<String, String> map = new HashMap<String, String>();
T

Muito obriogado por ter respondido!

Então tentei executar io código que você enviou e esta dando o seguinte erro:

C:\Documents and Settings\Tiago de Rizzo\AgendaGuj\src\agendaguj\Consultar.java:78: cannot find symbol

symbol  : variable map

location: class agendaguj.Consultar

String numero =  map.get(jTextField1.getText());

1 error

FALHA NA EXECUÇÃO (tempo total: 0 segundos)

/*

  • Consultar.java
  • Created on 30 de Novembro de 2007, 11:31
    */

package agendaguj;

import java.util.HashMap;
import java.util.Map;

/**
*

  • @author Tiago de Rizzo
    */
    public class Consultar extends javax.swing.JFrame {

    /** Creates new form Consultar */
    
    public Consultar() {
    
    Map<String, String> map = new HashMap<String, String>();
    
    map.put(Tiago,1234);
    
    initComponents();
    
    }
    

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      
      */
      
      // 
      
      private void initComponents() {
      
      jButton1 = new javax.swing.JButton();
      
      jTextField1 = new javax.swing.JTextField();
      
      jTextField2 = new javax.swing.JTextField();
      
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      
      jButton1.setText(jButton1);
      
      jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
      
      public void mouseClicked(java.awt.event.MouseEvent evt) {
      
      jButton1MouseClicked(evt);
      
      }
      
      });
      

      jTextField1.setText(“jTextField1”);

      jTextField2.setText(“jTextField2”);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      
      .addContainerGap(171, Short.MAX_VALUE)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGroup(layout.createSequentialGroup()
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(32, 32, 32)
      
      .addComponent(jButton1)))
      
      .addGap(63, 63, 63))
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(50, 50, 50)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jButton1)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(201, Short.MAX_VALUE))
      
      );
      
      pack();
      
      }//
      
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
    
    String numero =  map.get(jTextField1.getText());
    
    if (numero != null) {
    
    jTextField2.setText(numero);
    
    } else {
    
    jTextField2.setText(não encontrado);
    
    }
    

// TODO adicione seu código de manipulação aqui:
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Consultar().setVisible(true);
        }
    });
}

// Declaração de variáveis - não modifique                     
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// Fim da declaração de variáveis

}

Não to conseguindo achar o erro aqui, to tentando ainda hehe se você souber me passar por favor?

Valeu mesmo!

T

Tentei criar um JFrame novamente e deu um erro diferente, estou fazendo alguma coisa errada que é simples

Classe “agendaguj.Consultar” não tem um método main

/*

  • Consultar.java
  • Created on 30 de Novembro de 2007, 11:51
    */

package agendaguj;

/**
*

  • @author Tiago de Rizzo
    */
    public class Consultar extends javax.swing.JFrame {

    /** Creates new form Consultar */
    
    public Consultar() {
    
    Map<String, String> map = new HashMap<String, String>();
    
    map.put(Tiago,1234);
    
    initComponents();
    
    }
    
    }
    
    // 
    
    private void initComponents() {
    
    jButton1 = new javax.swing.JButton();
    
    jTextField1 = new javax.swing.JTextField();
    
    jTextField2 = new javax.swing.JTextField();
    
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     addMouseListener(new java.awt.event.MouseAdapter() {
         public void mouseClicked(java.awt.event.MouseEvent evt) {
             formMouseClicked(evt);
         }
     });
    
     jButton1.setText("jButton1");
     jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
         public void mouseClicked(java.awt.event.MouseEvent evt) {
             jButton1MouseClicked(evt);
         }
     });
    
     jTextField1.setText("jTextField1");
    
     jTextField2.setText("jTextField2");
    
     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
     getContentPane().setLayout(layout);
     layout.setHorizontalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
             .addContainerGap(173, Short.MAX_VALUE)
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                 .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
             .addGap(50, 50, 50)
             .addComponent(jButton1)
             .addGap(43, 43, 43))
     );
     layout.setVerticalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(layout.createSequentialGroup()
             .addGap(48, 48, 48)
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                 .addComponent(jButton1)
                 .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
             .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
             .addContainerGap(203, Short.MAX_VALUE))
     );
     pack();
    

    }//

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

String numero =  map.get(jTextField1.getText());

if (numero != null) {

jTextField2.setText(numero);

} else {

jTextField2.setText(não encontrado);

}

// TODO adicione seu código de manipulação aqui:

}
private void formMouseClicked(java.awt.event.MouseEvent evt) {

// TODO adicione seu código de manipulação aqui:
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Consultar().setVisible(true);
        }
    });
}

// Declaração de variáveis - não modifique
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// Fim da declaração de variáveis

}

bandkanone

Caro Amigo,

Crie uma classe para o cadastro de pessoa e defina os métodos que desejar:

public class Pessoa {
    
    private String nome;
    private String email;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

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

Feito isto crie seu formulário de busca:

import java.util.HashMap;
import javax.swing.JOptionPane;

public class Consultar extends javax.swing.JFrame {
    
    HashMap map = new HashMap();
    
    public Consultar() {
        initComponents();
        
        // cria dois Pessoas no cadastro
        Pessoa p1 = new Pessoa();
        p1.setNome("Ana");
        p1.setEmail("www@www");
        map.put(1, p1);
        
        Pessoa p2 = new Pessoa();
        p2.setNome("Marcia");
        p2.setEmail("yyy@yyy");
        map.put(2, p2);
    }

    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        tfNome = new javax.swing.JTextField();
        tfEmail = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        tfPocura = new javax.swing.JTextField();
        btBuscar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setText("Nome:");

        jLabel2.setText("Email");

        jLabel3.setText("Procurar:");

        btBuscar.setText("Buscar");
        btBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btBuscarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel2)
                                    .addComponent(jLabel1))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(tfEmail)
                                    .addComponent(tfNome, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tfPocura))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(111, 111, 111)
                        .addComponent(btBuscar)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(tfPocura, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(14, 14, 14)
                .addComponent(btBuscar)
                .addGap(29, 29, 29)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(tfNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(tfEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>                        

    private void btBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String texto = tfPocura.getText();
        
        for (int i = 1; i < map.size(); i++) {
            Pessoa aux = (Pessoa) map.get(i);
            if (texto.equals(aux.getNome())) {
                tfNome.setText(aux.getNome());
                tfEmail.setText(aux.getEmail());
            } else JOptionPane.showMessageDialog(this, "Não há cadastros para este nome");
        }
    }                                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Consultar().setVisible(true);
            }
        });
    }
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JButton btBuscar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JTextField tfEmail;
    private javax.swing.JTextField tfNome;
    private javax.swing.JTextField tfPocura;
    // Fim da declaração de variáveis                   
    
}

No construtor da classe eu crie duas pessoas (você pode ter um cadastro de pesoa por exemplo)

Daí o que for digitado no JTextField Procurar (tfProcurar) e clicado no botão Buscar quando encontrado será mostrado no JTextField Nom e Email.

Vale lembrar qu a busca é case sensitive (diferencia letras MAIÚSCULAS de mnúsculas).

Abraços.

T

Muito Obrigado irei testar aqui!

T

Consegui rodar, era isso mesmo que queria. Muito Obrigado Pessoal!!!

Se for possível vc poderia me explicar as linhas desse código?

String texto = tfProcura.getText();    // aqui esta recebendo o TextField2 renomeado pra tfProcura    
    for (int i = 1; i < map.size(); i++) {
        Pessoa aux = (Pessoa) map.get(i);
        if (texto.equals(aux.getNome())) {
            tfNome.setText(aux.getNome());
            tfEmail.setText(aux.getEmail());
        } else JOptionPane.showMessageDialog(this, "Não há cadastros para este nome");
    }

Obrigado!!

bandkanone
String texto = tfProcura.getText(); // pega o texto digitado no jtextfield Procurar
for (int i = 1; i < map.size(); i++) { // um for para percorrer todos os objetos contido no map
Pessoa aux = (Pessoa) map.get(i); // instância de Pessoa que irá receber um objeto específico do map fazendo um cast do objeto para pessoa
if (texto.equals(aux.getNome())) { // comparação do texto digitado com o nome da Pessoa que foi "pega" do objeto map retornando true se for igual e false se for diferente
// se for igual, insere o nome e o email nos respectivos jtextfields
tfNome.setText(aux.getNome()); 
tfEmail.setText(aux.getEmail());
break; // tinha esquecido, para o for se encontrar
} else JOptionPane.showMessageDialog(this, "Não há cadastros para este nome"); // caso não encontre o texto digitado, apresenta uma mensagem.
}
T

muito obrigado mais uma vez!! :smiley:

Estou tentando elaborar o botão Alterar com base no seguinte código de Consultar:

/*

  • Consultar.java
  • Created on 30 de Novembro de 2007, 12:26
    */

package agenda2007;

import java.util.HashMap;
import javax.swing.JOptionPane;

/**
*

  • @author Tiago de Rizzo
    */
    public class Consultar extends javax.swing.JFrame {

    HashMap map = new HashMap();

    public Consultar(){
    initComponents();

    // cria dois Pessoas no cadastro
     Pessoa p1 = new Pessoa();
     p1.setNome("Ana");
     p1.setEmail("www@www");
     map.put(1, p1);
     
     Pessoa p2 = new Pessoa();
     p2.setNome("Marcia");
     p2.setEmail("yyy@yyy");
     map.put(2, p2);
    

    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      
      */
      
      // 
      
      private void initComponents() {
      
      jToggleButton1 = new javax.swing.JToggleButton();
      
      tfProcura = new javax.swing.JTextField();
      
      tfEmail = new javax.swing.JTextField();
      
      jTextField3 = new javax.swing.JTextField();
      
      jLabel1 = new javax.swing.JLabel();
      
      jLabel2 = new javax.swing.JLabel();
      
      jLabel3 = new javax.swing.JLabel();
      
      tfNome = new javax.swing.JTextField();
      
      jLabel4 = new javax.swing.JLabel();
      
      jLabel5 = new javax.swing.JLabel();
      
      jTextField1 = new javax.swing.JTextField();
      
      jTextField2 = new javax.swing.JTextField();
      
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      
      jToggleButton1.setText(Consultar);
      
      jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
      
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      
      jToggleButton1ActionPerformed(evt);
      
      }
      
      });
      

      jLabel1.setText(“Nome”);

      jLabel2.setText(“Email”);

      jLabel3.setText(“Telefone1”);

      jLabel4.setText(“Telefone2”);

      jLabel5.setText(“Telefone3”);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(60, 60, 60)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addComponent(jLabel5)
      
      .addContainerGap())
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addComponent(jLabel4)
      
      .addContainerGap())
      
      .addGroup(layout.createSequentialGroup()
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(jLabel1)
      
      .addComponent(jLabel2)
      
      .addComponent(jLabel3)
      
      .addComponent(tfProcura, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(tfNome, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)
      
      .addComponent(tfEmail, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)
      
      .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)
      
      .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)))
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(28, 28, 28)
      
      .addComponent(jToggleButton1)))
      
      .addGap(128, 128, 128)))))
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(42, 42, 42)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(tfProcura, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGap(17, 17, 17)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel1)
      
      .addComponent(tfNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel2)
      
      .addComponent(tfEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel3)
      
      .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel4)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel5)
      
      .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addContainerGap(95, Short.MAX_VALUE))
      
      );
      
      pack();
      
      }//
      
    private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    String texto = tfProcura.getText();
    
    for (int i = 1; i < map.size(); i++) {
    
    Pessoa aux = (Pessoa) map.get(i);
    
    if (texto.equals(aux.getNome())) {
    
    tfNome.setText(aux.getNome());
    
    tfEmail.setText(aux.getEmail());
    
    } else JOptionPane.showMessageDialog(this, Não há cadastros para este nome);
    
    }
    
    }
    

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new Consultar().setVisible(true);
      }
      });
      }
    // Declaração de variáveis - não modifique
    
    private javax.swing.JLabel jLabel1;
    
    private javax.swing.JLabel jLabel2;
    
    private javax.swing.JLabel jLabel3;
    
    private javax.swing.JLabel jLabel4;
    
    private javax.swing.JLabel jLabel5;
    
    private javax.swing.JTextField jTextField1;
    
    private javax.swing.JTextField jTextField2;
    
    private javax.swing.JTextField jTextField3;
    
    private javax.swing.JToggleButton jToggleButton1;
    
    private javax.swing.JTextField tfEmail;
    
    private javax.swing.JTextField tfNome;
    
    private javax.swing.JTextField tfProcura;
    
    // Fim da declaração de variáveis
    

}

Seria a mesma lógica mesmo do botão Consultar?
Alguém poderia me dar mais uma help, por favor?

Obrigado!!

Marky.Vasconcelos

Poste seus códigos dentro das tags [code] e [/ code], isso ajuda muito a leitura.

bandkanone

Para alterar sugiro que você implemente o atributo codigo (com o get e o set) na classe pessoa.

Daí ao invéz de você ter a variável Pessoa aux local, deixei ela global na classe Consultar.

No evento do botão Alterar coloque o seguinte código:

aux.setNome(tfNome.getText());
    aux.setEmail(tfEmail.getText());
    aux.setTel1(tfTel1.getText());
    aux.setTel2(tfTel2.getText());
    aux.setTel3(tfTel3.getText());
bandkanone

Versão 2.0

/*
 * Consultar.java
 *
 * Created on 30 de Novembro de 2007, 11:38
 */

package teste;

import java.util.HashMap;
import javax.swing.JOptionPane;

/**
 *
 * @author  Odilon
 */
public class Consultar extends javax.swing.JFrame {
    Pessoa aux = null;
    HashMap map = new HashMap();
    
    /** Creates new form Consultar */
    public Consultar() {
        initComponents();
        
        // cria dois Pessoas no cadastro
        Pessoa p1 = new Pessoa();
        p1.setNome("Ana");
        p1.setEmail("www@www");
        map.put(0, p1);
        
        Pessoa p2 = new Pessoa();
        p2.setNome("Marcia");
        p2.setEmail("yyy@yyy");
        map.put(1, p2);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        tfNome = new javax.swing.JTextField();
        tfEmail = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        tfPocura = new javax.swing.JTextField();
        btBuscar = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        btCadastrar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setText("Nome:");

        jLabel2.setText("Email");

        jLabel3.setText("Procurar:");

        btBuscar.setText("Buscar");
        btBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btBuscarActionPerformed(evt);
            }
        });

        btAlterar.setText("Alterar");
        btAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAlterarActionPerformed(evt);
            }
        });

        btCadastrar.setText("Cadastrar");
        btCadastrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCadastrarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel2)
                                    .addComponent(jLabel1))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(tfEmail)
                                    .addComponent(tfNome, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(btCadastrar)))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tfPocura))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(111, 111, 111)
                        .addComponent(btBuscar)))
                .addContainerGap(21, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(171, Short.MAX_VALUE)
                .addComponent(btAlterar)
                .addGap(40, 40, 40))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(tfPocura, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(14, 14, 14)
                .addComponent(btBuscar)
                .addGap(29, 29, 29)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(tfNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(tfEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btAlterar)
                    .addComponent(btCadastrar))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>                        

    private void btCadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        aux = new Pessoa();
        aux.setNome(tfNome.getText());
        aux.setEmail(tfEmail.getText());
        map.put(map.size(),aux);
        limpaDados();
    }                                           
    
    private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        aux.setNome(tfNome.getText());
        aux.setEmail(tfEmail.getText());
        limpaDados();
    }                                         
    
    private void btBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String texto = tfPocura.getText();
        boolean possuiRegistro=false;
        for (int i = 0; i < map.size(); i++) {
            aux = (Pessoa) map.get(i);
            if (texto.equals(aux.getNome())) {
                tfNome.setText(aux.getNome());
                tfEmail.setText(aux.getEmail());
                possuiRegistro=true;
                break;
            }
        }
        if (!possuiRegistro) {
            JOptionPane.showMessageDialog(this, "Não há cadastros para este nome");
            limpaDados();
            tfPocura.requestFocus();
        }
    }                                        
    
    public void limpaDados() {
        tfNome.setText("");
        tfEmail.setText("");
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Consultar().setVisible(true);
            }
        });
    }
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JButton btAlterar;
    private javax.swing.JButton btBuscar;
    private javax.swing.JButton btCadastrar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JTextField tfEmail;
    private javax.swing.JTextField tfNome;
    private javax.swing.JTextField tfPocura;
    // Fim da declaração de variáveis                   
    
}
T

cara muito obrigado!!! meu vcs ajudam pra caramba!! valeu!!!

Agora to tentando fazer o botão remover!! ta quase pronto!! ehe

Se vc puder me ajudar a fazer o remover eu fico grato!!

Thanks!!

rubinelli

bandkanone, uma solução melhor é usar o nome como chave do HashMap. Assim você remove aquele loop de busca.

T

como assim rubinelli?

vc pode me dar um exemplo?

bandkanone

Tem razão rubinelli, ao invés de fazer

faça assim para incluir:

map.put(tfNome.getText(), aux);

Assim a chave passa a ser o nome da pessoa e não um int

T

E como eu fazeria pra carregar um arquivo que esta em um txt para o map (HashMap)?

T

Pessoal, como que faço pra fazer uma relação entre o botão adicionar e consultar na agenda…

Por exemplo tenho o botão consultar, quero consultar por nome, e jogar nos TextFields… é que criei uma pessoa no botao adicionar e outra no consultar… como faço pra usar só uma pessoa?

BOTÃO ADICIONAR:

Menu p4=new Menu();

p1.setNome(jTextField1.getText());

p4.setEmail(jTextField2.getText());

p4.setTelefone(jTextField3.getText());

p4.setTelefone2(jTextField4.getText());

p4.setTelefone3(jTextField5.getText());
if (map.get(p4.getNome()) != null) {
        System.out.println("Esse nome já esta cadastrado!");
        jTextField1.setText(" ");
        jTextField2.setText(" ");
        jTextField3.setText(" ");
        jTextField4.setText(" ");
        jTextField5.setText(" ");
    } else
        
    {
        map.put(p4.nome,p4.nome);
        map.put(p4.nome,p4.email);
        map.put(p4.nome,p4.Telefone);
        map.put(p4.nome,p4.Telefone2);
        map.put(p4.nome,p4.Telefone3);
        try {
            FileWriter fw = new FileWriter("c:\\arq.txt",true);       //true grava mais que um registro, nao grava em cima
            PrintWriter grava = new PrintWriter(fw);
            grava.print(jTextField1.getText() + ";" + jTextField2.getText() + ";" + jTextField3.getText() + ";" + jTextField4.getText());
            grava.println();
            grava.close();
            fw.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        System.out.println("Gravou!!");
    }
}

BOTÃO CONSULTAR:

String texto = jTextField6.getText();
    for (int i = 1; i < map.size(); i++) {
        Menu aux = (Menu) map.get(i);
        if (texto.equals(aux.getNome())) {               
            jTextField1.setText(aux.getNome());
            jTextField2.setText(p4.getEmail());
            jTextField3.setText(aux.getTelefone());
            jTextField4.setText(aux.getTelefone2());
            jTextField4.setText(aux.getTelefone3());
        } else JOptionPane.showMessageDialog(this, "Não há cadastros para este nome");
    }
Criado 30 de novembro de 2007
Ultima resposta 30 de nov. de 2007
Respostas 17
Participantes 4