Adicionar Objeto em uma List

PessoALL,

Tenho uma dúvida no seguinte trecho do meu código:

Contatos cont = new Contatos();
....
case 1:
cont.setNome(JOptionPane.showInputDialog(null, "Nome: ")); 
cont.setTel(JOptionPane.showInputDialog(null, "Telefone: "));
listaContatos.add(cont);
break;
//aqui eu vou ter alguma coisa (do/while) perguntando se deseja inserir outro contato na lista...é justamente aqui o problema

Pergunto: caso queria inserir outro contato, preciso criar um novo Objeto (ex. cont2) para inserir na lista?
Se sim, como fazer isso sem a necessidade de um Array.
Utilizei Lista justamente para evitar o Array convencional com capacidade limitada.

Obrigado

Contatos cont;
....   
case 1:   
cont = new Contatos();
cont.setNome(JOptionPane.showInputDialog(null, "Nome: "));   
cont.setTel(JOptionPane.showInputDialog(null, "Telefone: "));   
listaContatos.add(cont);   
break;

Assim ele vai criar uma instancia nova para cada contato adicionado.

[]´s

poderia explicar melhor o código?

porque o break faz a execução ir para o final do Swicth (sem executar o código q vc quer colocar) …

Poderia explicar a lógica do seu problema?

da mesma forma que vc criou o primeiro Contatos. Mas isso não quer dizer que vc precisa criar outra referência, basta criar um novo Contatos com um “new Contatos()” e atribuir a mesma variável. Observe o código:

while(contador++<maximo) { Contatos c = new Contatos(); ...//Setar os campos do objeto suaLista.add(c); }

Em cada iteração desse while, vc está adicionando um objeto diferente a lista.

Acho que isso pode te ajudar

Contatos cont = null;
do {
cont = new Contatos();
cont.setNome(JOptionPane.showInputDialog(null, "Nome: "));   
cont.setTel(JOptionPane.showInputDialog(null, "Telefone: "));  
listaContatos.add(cont);  
int i = JOptionPane.showOptionDialog(null, "Deseja continuar ?", "Confirmação", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, JOptionPane.YES_OPTION);
}while (i == JOptionPane.YES_OPTION);

Não vejo o porque de usar JOptionPane como interface final do usuário. Eu prefiro utilizar Forms, JLabel, JButtons e JTextFields.

[quote=yorgan] Contatos cont; .... case 1: cont = new Contatos(); cont.setNome(JOptionPane.showInputDialog(null, "Nome: ")); cont.setTel(JOptionPane.showInputDialog(null, "Telefone: ")); listaContatos.add(cont); break;
Assim ele vai criar uma instancia nova para cada contato adicionado.

[]´s[/quote]

É isso mesmo yorgan.
Funcionou beleza.

Meu medo era ficar entupindo a memória de Objetos do tipo Contatos.
Talvez eu tenha perdido algum conceito nesse sentido.

[quote=Gustavo.foa]poderia explicar melhor o código?

porque o break faz a execução ir para o final do Swicth (sem executar o código q vc quer colocar) …

Poderia explicar a lógica do seu problema?[/quote]

Se eu não colocar o break, o programa passa pelo case 2: também.
E não é o que eu desejo.

[quote=rissato]da mesma forma que vc criou o primeiro Contatos. Mas isso não quer dizer que vc precisa criar outra referência, basta criar um novo Contatos com um “new Contatos()” e atribuir a mesma variável. Observe o código:

while(contador++<maximo) { Contatos c = new Contatos(); ...//Setar os campos do objeto suaLista.add(c); }

Em cada iteração desse while, vc está adicionando um objeto diferente a lista.[/quote]

Isso aê rissato.

Só que fiz meu loop diferente do seu.

Valeu!

[quote=Thiago veiga]Acho que isso pode te ajudar

[code]
Contatos cont = null;
do {
cont = new Contatos();
cont.setNome(JOptionPane.showInputDialog(null, "Nome: "));
cont.setTel(JOptionPane.showInputDialog(null, "Telefone: "));
listaContatos.add(cont);
int i = JOptionPane.showOptionDialog(null, “Deseja continuar ?”, “Confirmação”, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, JOptionPane.YES_OPTION);
}while (i == JOptionPane.YES_OPTION);

[/code][/quote]

O loop que tenho aqui é exatamente esse igual o seu Thiago veiga.

Obrigado!

Sou iniciante ainda xwillianss.

Minha idéia é criar de uma maneira mais básica primeiro, depois de tudo OK eu pretendo fazer o mesmo programa com uma interface mais bacana.

Valeu a dica!