Nao sei como chamar uma arraylist

5 respostas
L
package projetosistemabancario;

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


public class JanelaClienteNovo extends javax.swing.JFrame {

    /**
     * Creates new form JanelaClienteNovo
     */
    
    //procurar saber o que eh isso
    public RepositorioCliente r = new RepositorioClienteArrayList();
    
    public JanelaClienteNovo() {
        initComponents();
    }

    @SuppressWarnings("unchecked")

    private void bOKActionPerformed(java.awt.event.ActionEvent evt) {                                    
       String cpf = tfCPF.getText();
       String nome = tfNome.getText();
       String telefone = tfTelefone.getText();
       String email = tfEmail.getText();
       
       Cliente c = new Cliente(cpf,nome,telefone,email);
        
       r.inserir(c);
       
       //limpa os dados
       tfCPF.setText("");
       tfNome.setText("");
       tfTelefone.setText("");
       tfEmail.setText("");
       
       JOptionPane.showMessageDialog(null,"Cadastro efetuado");
       
        
    }                                   

    private void bListarActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
              
        ArrayList<Cliente> x = r.listaTodos();
        
       tfNome.setText(x.get(0).getNome());
       tfCPF.setText(x.get(0).getCpf());
       tfEmail.setText(x.get(0).getEmail());
       tfTelefone.setText(x.get(0).getTelefone());
        
        
    }

Essa classe serve para salvar no array de clientes

package projetosistemabancario;

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

/**
 *
 * @author 123
 */
public class JanelaCliente extends javax.swing.JFrame {
    
    public JanelaCliente() {
       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.
     */
    @SuppressWarnings("unchecked")
   
    private void bNovoActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // ação do botão NOVO
        JanelaClienteNovo a = new JanelaClienteNovo();

        a.setVisible(true);
        
       
    }                                     

    private void bListarActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // Ação do botão listar
        RepositorioCliente r = new RepositorioClienteArrayList();
        
        ArrayList<Cliente> x = r.listaTodos();
        
       
            //for(int i = 0; i < x.size(); i++)
            JOptionPane.showMessageDialog(null,x.get(0).getEmail());
        
 
        String a =x.get(0).getEmail() ;
                
        tabelaCliente.setValueAt(a, 0, 1);
        
       
        
    }

Aqui eh onde eu desejo chamar o arrylist;

package projetosistemabancario;

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

public class RepositorioClienteArrayList implements RepositorioCliente {
    
    public ArrayList<Cliente> clientes;
    
    public RepositorioClienteArrayList()
    {
        clientes = new ArrayList<Cliente>();
    }

    @Override
    public void inserir(Cliente cliente) {
        
        this.clientes.add(cliente);
        
    }

    @Override
    public void remover(Cliente cliente) {
        
        this.clientes.remove(verificarExistencia(cliente));
    }

    @Override
    public int verificarExistencia(Cliente cliente) {
        int i = -1;
        for (int k=0; k < this.clientes.size(); k++)
            if (cliente.getCpf().equals(this.clientes.get(k).getCpf()))
            {  
                i = k;
                break;
            }
        return i;
       
    }
    

    @Override
    public ArrayList<Cliente> listaTodos() {
        
        return this.clientes;
    }
    
}

Gostaria de chamar o arraylist que salvo na primeira classe neste botão da segunda janelas Blistar, se alguem puder me ajudar agradeço muitissimo.

5 Respostas

romarcio

Você criou um arraylist local dentro do método, da i não vai conseguir mesmo. Precisa criar uma variável de instancia do tipo arraylist e gerar o método get dela, dai poderá chamar em contra classe.

L

Eu não sei como fazer isso, por favor me ajude. Tenho que entregar esse projeto ainda hoje.

romarcio

Exemplo:

private ArrayList&lt;Cliente&gt; arrayList;

    public ArrayList getArrayList() {
        return arrayList;
    }

depois no seu método troque:

ArrayList&lt;Cliente&gt; x = r.listaTodos();
 // por
arrayList = r.listaTodos();
Arthur_F_Ferreira

O problema não está em ter um getter. Ele já implementou um “getter” com o método listarTodos.

Eu não sei como que está o seu código inteiro, mas o seu problema está na construção do RepositórioClienteArrayList.

Na classe JanelaClienteNovo, você cria uma nova instância de RepositórioClienteArrayList. A mesma coisa você faz na classe JanelaCliente, mais especificamente no método bListarActionPerformed.

O certo seria você criar esse repositório em uma classe em comum a todas as suas janelas e passar a instância por parâmetro para as janelas terem acesso ao mesmo repositório. Entendeu?

darklordkamui

Seu fluxo de trabalho esta um pouco comprometido… se você separar por camadas, seria mais eficiente, a continuação do fluxo da informação…

Sei que em projetos Swing é um pouco complicado trabalhar com mvc, mas se vc conseguir implementar o basico pelo menos já melhoraria em muito sua forma de trabalho, tornando mais produtivo…

em fim pelo que vc postou seria mais viavel vc refatorar tudo…

exemplo:

InterfaceGrafica > Controller > Service > Model > Repositorio…

Sendo InterfaceGrafica só o swing…
Controller vai somente gerenciar o fluxo das informações
Service Gerencia os processos de Serviço ou chama outros Serviços para compor o atual
Model é a regra de negocio
Repositorio seria o DAO aonde contem toda regra de persistencia…

se vc criar uma organização assim vai ser mais facil de programar no final

Em fim é um sugestão…

Criado 22 de dezembro de 2012
Ultima resposta 23 de dez. de 2012
Respostas 5
Participantes 4