Sobrepondo lista

6 respostas
F

Amigos,

Estou usando netbeans

Tenho a seguinte Classe Agenda, o código está abaixo. O que acontece é o seguinte, criei um botão armazenar e nele tem o código abaixo. Quando clico botão armazenar, sobrescreve o que ja tem, não adiciona.

Instancio assim nesse método: public class FrmAgenda extends javax.swing.JFrame

Agenda a = new Agenda();

BOTAO ARMAZENAR

private void btnArmazenarPessoaActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        String nome = txtNome.getText();
        int idade = (Integer.parseInt(txtIdade.getText()));;
        float altura = (Float.parseFloat(txtAltura.getText()));

        a.armazenaPessoa(nome, idade, altura);
        
        txtNome.setText("");
        txtIdade.setText("");
        txtAltura.setText("");
        
}

Classe Agenda.java:

import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

public class Agenda
{
public Pessoa[] p = new Pessoa[10];
public Integer count = 0;

ArrayList<String> lista;

void armazenaPessoa(String nome, Integer idade, float altura)
        {
        lista = new ArrayList();
    
        lista.add(nome + ";" + idade + ";" + altura);
        JOptionPane.showMessageDialog(null, "Dados gravados com sucesso!!!");
        }

  public void lista() {
    System.out.printf("\n\nListando os itens da Agenda:\n");
    int i, n = lista.size();
    for (i=0; i<n; i++) {
      System.out.printf("%d- %s\n", i, lista.get(i));
    }
    System.out.printf("-----------------------------------\n\n");
  }
}

6 Respostas

M

Você tem que instanciar o ArrayList lista fora do método armazenaPessoa. Faça isso no construtor, como abaixo:

public Agenda() {
    lista = new ArrayList();
}

Não esqueça essa linha de código do método armazenaPessoa.

F

Seria aqui dentro:

public class Agenda
{

   public Pessoa[] p = new Pessoa[10];
   public Integer count = 0;

  ArrayList<String> lista;

}

lista = new ArrayList(); Coloquei essa linha abaixo do ArrayList e deu erro para criar a classe lista no pacote ou em Agenda

M

fbrigatt,

Perceba que eu criei um construtor para atribuir o valor para a lista. Veja novamente:

public Agenda() { lista = new ArrayList<String>(); }

O código acima é o que chamamos de construtor. Ele é como se fosse um método, a diferença é que ele vai ser executado no momento em que você cria a instância da sua classe. Você nunca pode chamar ele a não ser nessa hora. Então quando você fazer:

Agenda agenda = new Agenda()

ele vai chamar o construtor da classe, que nesse caso vai instanciar o ArrayList.

F

Ok, deu certo.

Como faria para pesquisar um item dessa lista? Mostrando a posição?

F

Só mais uma coisinha, como faço para iniciar em 1 quando gravar, ta começando em 0.

M

O seu for começa em 0, mude ele para iniciar a partir do número 1. Lembre-se de mudar a condição de parada para <=.

Criado 21 de outubro de 2012
Ultima resposta 21 de out. de 2012
Respostas 6
Participantes 2