[RESOLVIDO]Chamar lista através de interface gráfica!

Gente estou postando aqui pq no básico não conseguiram me ajudar!

Tenho o seguinte, uma interface gráfica que quando eu clicar no seu botão “PROXIMO” ele deve ir para um proximo registro que eu guardo na minha ArrayList, e aparecer todos os dados da pessoa na tela!

Meu problema, chamar essa lista que está instanciada na minha classe cadastro de pessoas!
Já tentei inumeras formas, olhei a API completa e o google não me ajudou muito, isso parece ser simples, mas ainda naum tive a ideia de como faze-lo!

Brigado pela ajuda! :wink:

Ué cara, é só manter um contador, quando clicar em Próximo você incrementa o contador, pega o objeto do ArrayList e joga os valores dos campos do objeto para os componentes de interface, qual a dificuldade nisso ?

Eu jah tentei fazer isso, mas tipo ele naum encontra a lista q eu criei na classe CadPessoas!!

Naum sei pq, jah criei a classe bonitinha com tratamento de excessões e tudo, mas ele continua estourando a IndexOutOfBoundsException!
:confused:

posta uma porção do código, tem 100000 formas de fazer isso, até da para fazer enquanto jogo video game .

[quote=guisantogui]Gente estou postando aqui pq no básico não conseguiram me ajudar!

Já tentei inumeras formas, olhei a API completa e o google não me ajudou muito, isso parece ser simples, mas ainda naum tive a ideia de como faze-lo!

Brigado pela ajuda! :wink:[/quote]

e muitas vezes o segredo não esta em ler a API, mas sim em saber juntar os poucos conhecimentos da api que nos temos e bolar o algoritmo certo

Olha a classe Cad Pessoas

public class CadastroDePessoas{

    private List<Pessoa> lista;
    private int posicao = -1;

    public CadastroDePessoas(){
        lista = new ArrayList<Pessoa>();
    }

    public boolean adiciona(Pessoa p){
        return lista.add(p);
    }

    public Pessoa prox() throws NoSuchElementException, IndexOutOfBoundsException{
        return lista.get(++posicao);
    }

    public Pessoa ant() throws NoSuchElementException, IndexOutOfBoundsException{
        return lista.get(--posicao);
    }

    public Pessoa ultimoDaLista() throws NoSuchElementException, IndexOutOfBoundsException{
        return lista.get(lista.size()-1);
    }

    public Pessoa primeiroDaLista() throws NoSuchElementException, IndexOutOfBoundsException{
        return lista.get(0);
    }

    public int getPosicao() {
        return posicao;
    }

    public List<Pessoa> getLista(){
        return lista;
    }

    @Override
    public String toString(){
        StringBuffer s = new StringBuffer();
        for(Pessoa p : lista){
            s.append(p.toString());
        }
        return s.toString();
    }
}

A interface q chama ela

public class Main {

    public static void main(String args[]) throws ParseException{
        
        CadastroDePessoas cdp = new CadastroDePessoas();

        Pessoa p1 = new Pessoa("TESTE", "a", "a", "a", "a", "a", "a", "a");
        Pessoa p2 = new Pessoa("GUILHERME", "2a", "2a", "2a", "2a", "2a", "2a", "2a");
        Pessoa p3 = new Pessoa("JACO", "wow", "wow", "wow", "wow", "wow", "wow", "wow");
        Pessoa p4 = new Pessoa("LUIS", "2", "2", "2", "2", "2", "2", "2");
        Pessoa p5 = new Pessoa("ANA", "AA", "AA", "AA", "AA", "AA", "AA", "AA");

        cdp.adiciona(p4); //Adicionado desta forma
        cdp.adiciona(p5);

        JanelaCadastroDePessoas jcp = new JanelaCadastroDePessoas();
        jcp.getCdp().getLista().add(p1);
        jcp.getCdp().getLista().add(p2);
        jcp.getCdp().getLista().add(p3); //Adicionado de maneira diferente para não ter duvidas!
        jcp.getCdp().getLista().add(p4);
        jcp.getCdp().getLista().add(p5);

        System.out.println(jcp.getCdp().getLista().size());  //Listas diferentes --- abaixo  vv
        System.out.println(cdp.getLista().size());           //Listas diferentes --- acima   ^^

        JanelaMenuPrincipal jmp = new JanelaMenuPrincipal();
        jmp.setVisible(true);

O q vcs axam?

Pra mim é óbvio que as listas são diferentes, pelo jeito você instancia uma lista em CadastroDePessoas e outra lista em JanelaCadastroDePessoas. É provável que você esteja confundindo o conceito de classe e objeto, não ? Para ter certeza poste também o código da JanelaCadastroDePessoas.

[code]package Interface;

import Classes.CadastroDePessoas;
import Classes.Pessoa;
import Classes.PlainDocument;
import java.util.NoSuchElementException;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
*

  • @author P Informática
    */
    public class JanelaCadastroDePessoas extends javax.swing.JFrame {

    CadastroDePessoas cadp = new CadastroDePessoas();

    Pessoa p1 = new Pessoa(“TESTE”, “a”, “a”, “a”, “a”, “a”, “a”, “a”);
    Pessoa p2 = new Pessoa(“GUILHERME”, “2a”, “2a”, “2a”, “2a”, “2a”, “2a”, “2a”);

    public JanelaCadastroDePessoas() {
    initComponents();
    /* try {
    cadp = CadastroDePessoas.class.newInstance();
    }
    catch (InstantiationException ex) {
    Logger.getLogger(JanelaCadastroDePessoas.class.getName()).log(Level.SEVERE, “Erro”, ex);
    }
    catch (IllegalAccessException ex) {
    Logger.getLogger(JanelaCadastroDePessoas.class.getName()).log(Level.SEVERE, “Erro”, ex);
    }*/
    }

//AKI CODIGO GERADO PELO NETBEANS

private void btnFecharActionPerformed(java.awt.event.ActionEvent evt) {                                          
    this.dispose();
}                                         

private void btnProximoElemActionPerformed(java.awt.event.ActionEvent evt) {                                               
    try{
        txtNome.setText(cadp.prox().getNome());
        txtPosicaoLista.setText(String.valueOf(cadp.getPosicao()+2)+1);
    }
    catch(NoSuchElementException nsee){
        JOptionPane.showMessageDialog(null, "Não há registros na lista!", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(IndexOutOfBoundsException iofbe){
        JOptionPane.showMessageDialog(null, "Não há proximo registro", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(NullPointerException npe){
        JOptionPane.showMessageDialog(null, "Não há proximo registro!", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
}                                              

private void btnUltimoElemActionPerformed(java.awt.event.ActionEvent evt) {                                              
    try{
        txtNome.setText(cadp.ultimoDaLista().getNome()); // ALTERAR ISSO
        txtPosicaoLista.setText(String.valueOf(cadp.ultimoDaLista()));
    }
    catch(NoSuchElementException nsee){
        JOptionPane.showMessageDialog(null, "Não há registros na lista", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(IndexOutOfBoundsException iofbe){
        JOptionPane.showMessageDialog(null, "Não há registros", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(NullPointerException npe){
        JOptionPane.showMessageDialog(null, "Não há mais registros!", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
}                                             

private void btnPrimeiroElemActionPerformed(java.awt.event.ActionEvent evt) {                                                
    try{
        txtNome.setText(cadp.primeiroDaLista().getNome()); // ALTERAR ISSO
        txtPosicaoLista.setText(String.valueOf(cadp.primeiroDaLista()));
    }
    catch(NoSuchElementException nsee){
        JOptionPane.showMessageDialog(null, "Não há registros na lista", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(IndexOutOfBoundsException iofbe){
        JOptionPane.showMessageDialog(null, "Não há registros", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(NullPointerException npe){
        JOptionPane.showMessageDialog(null, "Não há registros!", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
}                                               

private void btnAnteriorElemActionPerformed(java.awt.event.ActionEvent evt) {                                                
    try{
        txtNome.setText(cadp.primeiroDaLista().getNome()); // ALTERAR ISSO
        txtPosicaoLista.setText(String.valueOf((cadp.getPosicao()+2)-1));
    }
    catch(NoSuchElementException nsee){
        JOptionPane.showMessageDialog(null, "Não há registros na lista", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(IndexOutOfBoundsException iofbe){
        JOptionPane.showMessageDialog(null, "Não há registro anterior", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(NullPointerException npe){
        JOptionPane.showMessageDialog(null, "Não há registro anterior!", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
}                                               

private void btnIrParaActionPerformed(java.awt.event.ActionEvent evt) {                                          
    try{
    cadp.getLista().get(Integer.parseInt(txtIrPara.getText().trim()));
    }
    catch(IndexOutOfBoundsException iofbe){
        JOptionPane.showMessageDialog(null, "Não há elementos na posição selecionada", "ERRO", JOptionPane.ERROR_MESSAGE);
    }
    catch(NumberFormatException nfe){
        JOptionPane.showMessageDialog(null, "Este campo deve ser preenchido com números e sem espaços entre eles", "ERRO", JOptionPane.WARNING_MESSAGE);
    }
    finally{txtIrPara.setText("");}
}                                         

private void btnAddNovaPessoaActionPerformed(java.awt.event.ActionEvent evt) {                                                 
    try{
        if(txtNome.getText().trim().equals("") ){ //EM CONSTRUÇÃO

        }
        txtApelido.setText("");
        txtBairro.setText("");
        txtCep.setText("");
        txtCidade.setText("");
        txtEmailGeral.setText("");
        txtEndereco.setText("");
        txtFax.setText("");
        txtHomePage.setText("");
        txtIrPara.setText("");
        txtNome.setText("");
        txtPosicaoLista.setText("");
        txtTelefone.setText("");
        txtUF.setText("");
        
    }
    finally{

    }
}                                                

public CadastroDePessoas getCdp(){
    return cadp;
}
public JTextField getTxtNome(){
    return txtNome;
}
public JTextField getTxtApelido(){
    return txtApelido;
}
public JTextField getTxtBairro(){
    return txtBairro;
}
public JTextField getTxtCep(){
    return txtCep;
}
public JTextField getTxtCidade(){
    return txtCidade;
}
public JTextField getTxtEmailGeral(){
    return txtEmailGeral;
}
public JTextField getTxtEndereco(){
    return txtEndereco;
}
public JTextField getTxtFax(){
    return txtFax;
}
public JTextField getTxtUf(){
    return txtUF;
}
public JTextField getTxtTelefone(){
    return txtTelefone;
}
public JTextField getTxtHomePage(){
    return txtHomePage;
}
public JTextField getTxtPosicaoLista(){
    return txtPosicaoLista;
}  

//AKI VARIAVEIS GERADAS PELO NETBEANS

}[/code]

PS.: instanciei daquelas duas maneiras a lista para testar se estava chamando a mesma! (parece q não) :confused:

Veja bem, cada vez que você cria um objeto CadastroDePessoas você cria uma lista nova. Então, basta instanciar JanelaCadastroDePessoas que você cria um objeto CadastroDePessoas e consequentemente uma lista. Além do mais, a maneira como você está tratando os limites do ArrayList está errada. Você não deve fazer isso capturando exceções, você deve testar o índice antes de acessá-lo. A exceção existe para evitar o que acontece com a linguagem C, na qual você pode acessar um array além dos limites.

Bom então o que você acha que eu devo fazer, para a minha interface conseguir chamar a lista?

vlw pela ajuda!

FINALEMENTE CONSEGUI PEGAR A LISTA CERTA!!! :smiley: :smiley: :smiley:

agora soh falta arrumar o resto :wink: