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

23 respostas
guisantogui

Boa tarde pessoal, tenho uma implementação onde devo fazer que exista um botão onde nele eu possa ir para o proximo elemento na lista e consequentemente aparecer os dados desse proximo elemento na janela!

Minha classe com a lista e a interface!

Classe lista
public class CadastroDePessoas{

    private ArrayList<Pessoa> lista;
    private ListIterator<Pessoa> iterador;

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

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

    public String proxima(){
        return lista.listIterator().next().getNome();
    }

Interface (evento)

private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String a = cdp.proxima();
        cdp.proxima();
        txtNome.setText(a);
    }
public class Main {

    public static void main(String args[]){

        CadastroDePessoas cdp = new CadastroDePessoas();

        Pessoa p1 = new Pessoa("TESTE", "a", "a", "a", "a", "a", "a", "a");
        Pessoa p2 = new Pessoa("GUILHERME", "2a", "2a", "22a", "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(p1);
        cdp.adiciona(p2);
        cdp.adiciona(p3);
        cdp.adiciona(p4);
        cdp.adiciona(p5); 

       TestaProximo tp = new TestaProximo();
       tp.setVisible(true);

e o ERRO

Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
        at java.util.AbstractList$Itr.next(AbstractList.java:350)
        at Classes.CadastroDePessoas.proxima(CadastroDePessoas.java:28)
        at Interface.TestaProximo.btnProximoActionPerformed(TestaProximo.java:110)
        at Interface.TestaProximo.access$100(TestaProximo.java:22)
        at Interface.TestaProximo$2.actionPerformed(TestaProximo.java:56)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Se alguem perceber algum erro posta ai! :wink: Pq um olhar de fora as vezes ve mais!

VlW

23 Respostas

Gerson_da_S_Lima
1º  no primeiro clique do botão   erro, ou consegue imprimir alguma vez?

2º Porque no método btnProximoActionPerformed você chama duas vezes o método cdp.proxima()?

String a = cdp.proxima();

cdp.proxima();

3º No seu método proxima() de cadastro de pessoas, uma hora ou outra vai dar erro, porque você esta sempre chamando o next da lista e o método do objeto contido, se não houver um tratamento para evitar que chame uma posição da lista q não existe sempre vai dar erro.

guisantogui

Ok eu sei q tenho q tratar a IndexOutOfBounds, e a NoSuchElements mas agora soh qro para teste!

E é sim qdo eu clico na primeira vez ele jah estoura a NoSuchElements, sabe onde pode estar o erro?

Obrigado!

Gerson_da_S_Lima

Tem como postar o código completo das classes? As linhas que estáo sendo apontadas nos erros náo constam no trecho de código que vocë enviou.

guisantogui

ok

Classes:

Cadastro de Pessoas

package Classes;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
/**
 *
 * @author Guilherme Santos Souza
 * @version 1.0
 */

public class CadastroDePessoas{

    private ArrayList<Pessoa> lista;
    private ListIterator<Pessoa> iterador;

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

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

    public Pessoa proxima(){
        return lista.listIterator().next();
    }
 /*   public void it(){
        while(iterador.hasNext()){
            Pessoa p = iterador.next();
            System.out.println(p.toString());
        }
    }*/

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

Main

public class Main {

    public static void main(String args[]){

        for(int x = 1; 1 < x; x++)
        {
        CriarConexaoBancoDeDados c = new CriarConexaoBancoDeDados();
        c.criaConexao();
        ConexaoETabelas conETab = new ConexaoETabelas();
        conETab.criarTabelaDoProjeto();
        }
         */

        CadastroDePessoas cdp = new CadastroDePessoas();

        Pessoa p1 = new Pessoa("TESTE", "a", "a", "a", "a", "a", "a", "a");
        Pessoa p2 = new Pessoa("GUILHERME", "2a", "2a", "22a", "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(p2);
        cdp.adiciona(p3);
        cdp.adiciona(p4);
        cdp.adiciona(p5);
        cdp.adiciona(p1);
       
       TestaProximo tp = new TestaProximo();  tp.setVisible(true);

Interface grafica(Com cod gerado pelo netBeans)

public class TestaProximo extends javax.swing.JFrame {

   CadastroDePessoas cdp = new Classes.CadastroDePessoas();

    public TestaProximo() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        btnAnterior = new javax.swing.JButton();
        btnProximo = new javax.swing.JButton();
        txtNome = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        btnAnterior.setText("<<");
        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnteriorActionPerformed(evt);
            }
        });

        btnProximo.setText(">>");
        btnProximo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnProximoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(76, 76, 76)
                .addComponent(txtNome, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
                .addContainerGap(397, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(95, 95, 95)
                .addComponent(btnAnterior)
                .addGap(18, 18, 18)
                .addComponent(btnProximo)
                .addContainerGap(416, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addGap(170, 170, 170)
                .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 59, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnProximo)
                    .addComponent(btnAnterior))
                .addGap(117, 117, 117))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 627, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 389, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        cdp.proxima();
        txtNome.setText(cdp.proxima());
    }                                          


    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAnterior;
    private javax.swing.JButton btnProximo;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField txtNome;
    // End of variables declaration                   

}

Classe Pessoa tb

import java.text.SimpleDateFormat;
import java.util.ArrayList;

public class Pessoa {

    private ArrayList<String> listaTipo;
    private String nome;
    private String endereco;
    private String telefone;
    private String cpf;
    private String cnpj;
    private String fax;
    private String email;
    private String homepage;
    private String cep;
    private String bairro;
    private String cidade;
    private String uf;
    private String observacao;
    private String apelido;
    private SimpleDateFormat dataFundacao;
    private SimpleDateFormat dataNascimento;

    public Pessoa(String nome, String endereco, String telefone, String email, String cep, String bairro, String cidade, String uf) {
        this.nome = nome;
        this.endereco = endereco;
        this.telefone = telefone;
        this.email = email;
        this.cep = cep;
        this.bairro = bairro;
        this.cidade = cidade;
        this.uf = uf;
    }

    public boolean addTipo(String tipo){
        return listaTipo.add(tipo);
    }

    public ArrayList<String> getListaTipo() {
        return listaTipo;
    }
    
    public String getApelido() {
        return apelido;
    }

    public String getBairro() {
        return bairro;
    }

    public String getCep() {
        return cep;
    }

    public String getCidade() {
        return cidade;
    }

    public SimpleDateFormat getDataFundacao() {
        return dataFundacao;
    }

    public String getEmail() {
        return email;
    }

    public String getFax() {
        return fax;
    }

    public String getHomepage() {
        return homepage;
    }

    public String getObservacao() {
        return observacao;
    }

    public String getUf() {
        return uf;
    }

    public String getCpf() {
        return cpf;
    }

    public SimpleDateFormat getDataNascimento() {
        return dataNascimento;
    }

    public String getEndereco() {
        return endereco;
    }

    public String getNome() {
        return nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public void setDataFundacao(SimpleDateFormat dataFundacao) {
        this.dataFundacao = dataFundacao;
    }

    public void setDataNascimento(SimpleDateFormat dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

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

    public void setFax(String fax) {
        this.fax = fax;
    }

    public void setHomepage(String homepage) {
        this.homepage = homepage;
    }

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

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    
    @Override
    public String toString() {
        StringBuffer s = new StringBuffer();
        s.append("\nNome: ");
        s.append(nome);
        s.append("\nCPF: ");
        s.append(cpf);
        s.append("\nData de nascimento: ");
        s.append(dataNascimento);
        s.append("\nTelefone: ");
        s.append(telefone);
        return s.toString();
    }
}
Gerson_da_S_Lima

Vamos lá.

1 - Você deveria tá chamando seu método proxima de CadastroDePessoas somente uma vez no método btnProximo…

private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) { //cdp.proxima(); txtNome.setText(cdp.proxima().getNome()); }

2 - Essa referencia cdp que vocë usa em TestaProximo não é a mesma que vocë usa em Main, portanto a lista de pessoas de TestaProximo está vazia, por isso tá dando o erro. Tente preencher a lista da referencia testa proximo, mais ou menos assim:

TestaProximo tp = new TestaProximo(); tp.getCdp().adiciona(p2); tp.getCdp().adiciona(p3); tp.getCdp().adiciona(p4); tp.getCdp().adiciona(p5); tp.getCdp().adiciona(p1); tp.setVisible(true);

e ao invés de acessar o iterator da lista como você está fazendo tente fazer assim:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
/**
 *
 * @author Guilherme Santos Souza
 * @version 1.0
 */

public class CadastroDePessoas{

    private ArrayList<Pessoa> lista;
    private int posicao = 0;

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

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

    public Pessoa proxima(){
        return lista.get(posicao++);
    }
 /*   public void it(){
        while(iterador.hasNext()){
            Pessoa p = iterador.next();
            System.out.println(p.toString());
        }
    }*/

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

aqui funcionou na boa.
Espero ter ajudado.

guisantogui

Vou testar obrigado pela ajuda! :smiley:

guisantogui

Soh mais uma coisa!
Eu tentei usar um posicao –

para voltar na lista, mas ele continua indo pra frente! :?
Sabe o q houve?

E mais uma coisa qdo o programa for rodar pra valer não vou poder deixar akele codigo na classe da interface gráfica! :?

Gerson_da_S_Lima

Pra questão da posição faça assim

na declaração declare posição com -1

private int posicao = -1;

nos métodos assim:

public Pessoa proxima(){
        return lista.get(++posicao);
    }
    
    public Pessoa anterior(){
        return lista.get(--posicao);
    }

Não entendi o que você quis dizer não deixar o código na classe da interface gráfica, mas a lógica tá aí, vamos pensar um pouco né.. :D .
Mas qualquer outra dúvida posta aí, mas só vou responder amanhã, tô indo pra casa cuidar do meu filho flw..

guisantogui

Boa idéia eu ja tinha colocado o (–) atras da variavel posição, mas o (++) não! :wink:

Mais uma coisa na JFrame eu devo colocar algo assim:

public class TestaProximo extends javax.swing.JFrame {

   CadastroDePessoas cdp = new Classes.CadastroDePessoas();

   Pessoa p1 = new Pessoa("TESTE", "a", "a", "a", "a", "a", "a", "a");
   Pessoa p2 = new Pessoa("GUILHERME", "2a", "2a", "22a", "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(p1);
   cdp.adiciona(p2);
   cdp.adiciona(p3);
   cdp.adiciona(p4);
   cdp.adiciona(p5);

    public TestaProximo() {
        initComponents();

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        painel = new javax.swing.JPanel();
        btnAnterior = new javax.swing.JButton();
        btnProximo = new javax.swing.JButton();
        txtNome = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        btnAnterior.setText("<<");
        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnteriorActionPerformed(evt);
            }
        });

        btnProximo.setText(">>");
        btnProximo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnProximoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout painelLayout = new javax.swing.GroupLayout(painel);
        painel.setLayout(painelLayout);
        painelLayout.setHorizontalGroup(
            painelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelLayout.createSequentialGroup()
                .addGap(76, 76, 76)
                .addComponent(txtNome, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
                .addContainerGap(397, Short.MAX_VALUE))
            .addGroup(painelLayout.createSequentialGroup()
                .addGap(95, 95, 95)
                .addComponent(btnAnterior)
                .addGap(18, 18, 18)
                .addComponent(btnProximo)
                .addContainerGap(416, Short.MAX_VALUE))
        );
        painelLayout.setVerticalGroup(
            painelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelLayout.createSequentialGroup()
                .addGap(170, 170, 170)
                .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 59, Short.MAX_VALUE)
                .addGroup(painelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnProximo)
                    .addComponent(btnAnterior))
                .addGap(117, 117, 117))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 627, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(painel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 389, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(painel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        txtNome.setText(cdp.prox().getNome());
    }                                          


    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAnterior;
    private javax.swing.JButton btnProximo;
    private javax.swing.JPanel painel;
    private javax.swing.JTextField txtNome;
    // End of variables declaration          


    }

Mas qdo eu faço isso o complilador não encontra as instancias criadas de Pessoa (p1,p2,p3,p4,p5)!!

Obrigado pela força pessoal!

Gerson_da_S_Lima

Assim não.

As referências p1, p2 ... podem continuar na classe com o método main, na classe TestaProximo eu adicionei um método getCdp() pra poder ter acessso ao atributo cpd que você criou, aí por esse método eu acesso o método adiciona de cadastroDePessoas.

Segue os fonte pra você entender melhor.

Main.java
public class Main {

    public static void main(String args[]){

        CadastroDePessoas cdp = new CadastroDePessoas();

        Pessoa p1 = new Pessoa("TESTE", "a", "a", "a", "a", "a", "a", "a");
        Pessoa p2 = new Pessoa("GUILHERME", "2a", "2a", "22a", "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");
       
       TestaProximo tp = new TestaProximo();  
       tp.getCdp().adiciona(p2);
       tp.getCdp().adiciona(p3);
       tp.getCdp().adiciona(p4);
       tp.getCdp().adiciona(p5);
       tp.getCdp().adiciona(p1);
       tp.setVisible(true);
    }
}
CadastrodePessoas.java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
/**
 *
 * @author Guilherme Santos Souza
 * @version 1.0
 */

public class CadastroDePessoas{

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

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

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

    public Pessoa proxima(){
        return lista.get(++posicao);
    }
    
    public Pessoa anterior(){
        return lista.get(--posicao);
    }
 /*   public void it(){
        while(iterador.hasNext()){
            Pessoa p = iterador.next();
            System.out.println(p.toString());
        }
    }*/

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

TestaProxima.java

public class TestaProximo extends javax.swing.JFrame {

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAnterior;
    private javax.swing.JButton btnProximo;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField txtNome;
    // End of variables declaration 

   CadastroDePessoas cdp = new CadastroDePessoas();

    public TestaProximo() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        btnAnterior = new javax.swing.JButton();
        btnProximo = new javax.swing.JButton();
        txtNome = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        btnAnterior.setText("<<");
        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnteriorActionPerformed(evt);
            }
        });

        btnProximo.setText(">>");
        btnProximo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnProximoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(76, 76, 76)
                .addComponent(txtNome, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
                .addContainerGap(397, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(95, 95, 95)
                .addComponent(btnAnterior)
                .addGap(18, 18, 18)
                .addComponent(btnProximo)
                .addContainerGap(416, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addGap(170, 170, 170)
                .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 59, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnProximo)
                    .addComponent(btnAnterior))
                .addGap(117, 117, 117))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 627, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 389, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {                                            
    	 txtNome.setText(cdp.anterior().getNome());
    }                                           

    private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        //cdp.proxima();
        txtNome.setText(cdp.proxima().getNome());
    }                     
    
    public CadastroDePessoas getCdp() {
		return cdp;
	}

}

E outra dica, tenta importar os pacotes das classe que tu tá utilizando ao invés de ficar fazendo new javax.swing.JButton(), fica muito sujo o código, flw.

Esquece isso que eu disse acima, pelo que vi vocë tá utilizando o NetBeans. É ele quem faz desse jeito.

guisantogui

Bom continuo com a excessão de indexOutOfBoundsException estourando, não sei o pq, pois jah adicionei todos os elementos na lista!

CoDiGo

Main:

public static void main(String args[]){
        JanelaMenuPrincipal jmp = new JanelaMenuPrincipal();
        jmp.setVisible(true);

        CadastroDePessoas cdp = new CadastroDePessoas();

        Pessoa p1 = new Pessoa("TESTE", "a", "a", "a", "a", "a", "a", "a");
        Pessoa p2 = new Pessoa("GUILHERME", "2a", "2a", "22a", "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");

        JanelaCadastroDePessoas jcp = new JanelaCadastroDePessoas();
        jcp.getCdp().adiciona(p1);
        jcp.getCdp().adiciona(p2);
        jcp.getCdp().adiciona(p3);
        jcp.getCdp().adiciona(p4);
        jcp.getCdp().adiciona(p5);

Evento do botão!

private void btnProximoElemActionPerformed(java.awt.event.ActionEvent evt) { // try{ txtNome.setText(cdp.prox().getNome()); // } /* catch(NoSuchElementException nsee){ JOptionPane.showMessageDialog(null, "Não há elementos na lista!", "ERRO", JOptionPane.ERROR_MESSAGE); } catch(IndexOutOfBoundsException iofbe){ JOptionPane.showMessageDialog(null, "Não há elementos nessa posição da lista", "ERRO", JOptionPane.ERROR_MESSAGE); }*/ }

Gerson_da_S_Lima

Cara seu código agora ficou confuso.

Quem é JanelaCadastroDePessoas, JanelaMenuPrincipal?

Se o botáo que chama o próximo elemento da lista estiver em JanelaMenuPrincipal, não vai dar certo mesmo, você está adicionando pessoas em JanelaCadastroDePessoas.

guisantogui

Não, não a janela menu principal é a janela “main” e através dela eu chego na JCadastroDePessoas!

Gerson_da_S_Lima

Ah cara entendi. você tá querendo fazer uma tela de cadastro com aqueles botões de navegação pelo indice e tal, acho que é isso.
Se for, acho bom darmos uma mudada no seu código. Agora tô sem tempo, vou ver se faço um exemplo bem prático e te mando amanhã. Eu já fiz isso em um sistema de controle de estoque e vendas, mas resolvi mudar, mas em todo caso, se quiser nos falamos amanhã, flw.

guisantogui

Vlw pela ajuda!!

essa navegação ta me dando dor de cabeça! hehe!!

Ateh amanha!
flw!

guisantogui

Pessoal o negócio é o seguinte:

preciso que minha interface gráfica, qdo eu clicar no botão (next) ela ir para o proximo elemento da lista, isso eu já consegui, mas sempre que tento chamar a minha lista para fazer um get(pos) eu não consigo!

Nos posts acima tem os codigos das minhas implementações, sei q estou criando akela lista vazia, mas não axei outra forma de tentar solucionar o problema!
vlw!

Hebertbc

Ve se é oke eu entendi.

Vc tem uma tela de cadastro e um botao de navegação (next)
Vc tem uma lista de pessoas.
Vc quer navegar por essa lista, mostrando os dados até o final da lista e caso chegue no final, parar ou voltar pro inicio. isso?

guisantogui

qro q qdo eu clicar no botão next todos os campos se preencham com os dados da proxima pessoa da lista!

guisantogui

Gente isso aki ta me dando nos nervos!

Tipo eu tenho a minha lista CadPessoas e interface grafica CadastrarPessoas, mas não consigo fazer com q a interface busque os dados da lista!
alguem sabe como devo implementar isso!

Obg!

guisantogui

Não axei nada sobre o assunto e ainda naum consegui pensar em nada se alguem souber algo q possa me ajudar eu agradeço! :wink:

vlw!

guisantogui

Gente olha soh, eu naum sei onde ta o erro, soh pode ser nos testes que estou fazendo, pq ele coloca bonitinho os elementos na lista e retorna!

Mas a minha GUI ta dando uma IndexOutOfBoundsE. segue abaixo os codigos das classes se puderem dar uma revisada para mim! :wink:

Main

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", "22a", "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);

Cadastro de 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 AList<Pessoa> getLista(){
        return lista;
    }

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

Interface grafica

package Interface;
import Classes.CadastroDePessoas;
import Classes.Pessoa;
import Classes.PlainDocument;
import java.util.ArrayList;
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();

    public JanelaCadastroDePessoas() {
        initComponents();
       /* try {
            cdp = 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);
        }*/
    }

   //Aqui 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) {  //EM CONSTRUÇÃO
        try{
            if(txtNome.getText().trim().equals("") ){

            }
            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;
    }

    // Variables declaration - do not modify
    private javax.swing.JButton btnAddNovaPessoa;
    private javax.swing.JButton btnAnteriorElem;
    private javax.swing.JButton btnFechar;
    private javax.swing.JButton btnIrPara;
    private javax.swing.JButton btnPrimeiroElem;
    private javax.swing.JButton btnProximoElem;
    private javax.swing.JButton btnUltimoElem;
    private javax.swing.JLabel lbl1;
    private javax.swing.JLabel lblApelido;
    private javax.swing.JLabel lblBairro;
    private javax.swing.JLabel lblCadastroDePessoas;
    private javax.swing.JLabel lblCep;
    private javax.swing.JLabel lblCidade;
    private javax.swing.JLabel lblEmailGeral;
    private javax.swing.JLabel lblEndereco;
    private javax.swing.JLabel lblFax;
    private javax.swing.JLabel lblHomePage;
    private javax.swing.JLabel lblNome;
    private javax.swing.JLabel lblTelefone;
    private javax.swing.JPanel painel;
    private javax.swing.JTextField txtApelido;
    private javax.swing.JTextField txtBairro;
    private javax.swing.JTextField txtCep;
    private javax.swing.JTextField txtCidade;
    private javax.swing.JTextField txtEmailGeral;
    private javax.swing.JTextField txtEndereco;
    private javax.swing.JTextField txtFax;
    private javax.swing.JTextField txtHomePage;
    private javax.swing.JTextField txtIrPara;
    private javax.swing.JTextField txtNome;
    private javax.swing.JTextField txtPosicaoLista;
    private javax.swing.JTextField txtTelefone;
    private javax.swing.JTextField txtUF;
    // End of variables declaration

}
guisantogui

Alguma idéia?

PS.: Olhem post acima!

guisantogui

Apenas deixando o post na primeira pagina, para se alguem tiver uma idéia!

vlw! :wink:

Criado 9 de março de 2010
Ultima resposta 16 de mar. de 2010
Respostas 23
Participantes 3