Cadastro usando array

6 respostas
xandelol

Olá pessoal, tudo bem?
É o seguinte, eu tenho um programa que vai receber do usuário os dados para cadastrar um funcionário. O problema é que eu não sei como faço para salvar as informações do funcionário em um array . Como eu faço para adicionar um funcionário novo toda vez que eu clico no jButton?
Segue o meu código

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        ncf[qtde] = new NovoCustoFunc();
        ncf[qtde].nomefunc = jTextField1.getText();
        ncf[qtde].gs = jTextField2.getText();
        ncf[qtde].cc = Integer.parseInt(jTextField3.getText());
        ncf[qtde].atividade = jTextField4.getText();
        ncf[qtde].valor = Double.parseDouble(jTextField5.getText().replaceAll(",", "."));
        qtde++;
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        jTextField5.setText("");        
    }

Meu código salva as informações, mas sobrescreve a variável anterior.

OBS.: Eu sei que usar arrays não é a melhor opção, mas por enquanto eu só estou fazendo testes, para depois ver onde salvar essas informações.

6 Respostas

jks1903

Pelo que vi, a cada clique no botao jButton1 a sua variavel esta sendo reinstanciada.

Nessa linha

ncf[qtde] = new NovoCustoFunc();

Se voce quer manter os valores, não poderá reinstanciar a variável a cada clique.
Mas conforme voce mesmo disse, arrays não é a melhor forma. Um objeto funcionario armazenado em uma lista além de ser o ideal, seria muito mais facil a implementação.

yurifw

tenta colocar em um ArrayList:

vc declara o ArrayList, mas n declare dentro de nenhum metodo se n ele fica local:

ArrayList<NovoCustoFunc> funcionarios = new ArrayList<>();

no metodo do botao vc faz o seguinte:

NovoCustoFunc n = new NovoCustoFunc();
        
//seta os campos da variavel n
        
funcionarios.add(n);

ArrayList tem varios metodos pra vc trabalhar com listas, facilita bastante, de uma olhada na documentação da classe:
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

xandelol

Agora eu estou utilizando ArrayList como sugerido, mas o problema continua :? …
Meu código tá assim:

List<NovoCustoFunc> listanovocf = new ArrayList<NovoCustoFunc>();

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        NovoCustoFunc ncf = new NovoCustoFunc();
        ncf.nomefunc = jTextField1.getText();
        ncf.gs = jTextField2.getText();
        ncf.cc = Integer.parseInt(jTextField3.getText());
        ncf.atividade = jTextField4.getText();
        ncf.valor = Double.parseDouble(jTextField5.getText().replaceAll(",", "."));
        listanovocf.add(ncf);
        Teste("Testando", listanovocf);//Testar a saída
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        jTextField5.setText("");        
}

public void Teste(String titulo, Collection<NovoCustoFunc> collection){
        System.out.println(titulo);
        for (NovoCustoFunc str: collection) {
            System.out.print(str.nomefunc);
            System.out.print(" || "+str.gs);
            System.out.print(" || "+str.cc);
            System.out.print(" || "+str.atividade);
            System.out.println(" || "+str.valor);
        }
}

Eu insiro dois funcionários, por exemplo Alexandre, e Antonelli
Deveria sair:

Alexandre ...
Antonelli ...

Mas sai assim:

Antonelli...
Antonelli...
yurifw

acho que o erro esta em outra parte do codigo, vc ta usando esse arraylist em algum outro lugar? pq se n, nos dois estamos vacilando feio e n estamos vendo um erro bem obvio xD

tem mais alguma parte relevante do codigo? se tiver posta ai

xandelol

Minha classe é essa aqui:

/***********************************\
{*@author Alexandre Antonelli Cardoso*}
{*RG Funcional: 910299****************} 
 \***********************************/
package fechamento.zfsd;

//<editor-fold defaultstate="collapsed" desc=" Imports ">
import java.awt.Image;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
//</editor-fold>

public class NovoCusto extends javax.swing.JFrame {

    //<editor-fold defaultstate="collapsed" desc=" Variáveis GLOBAIS ">
    List<NovoCustoFunc> listanovocf = new ArrayList<NovoCustoFunc>();
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc=" NovoCusto ">
    public NovoCusto() {
        initComponents();
        setLocationRelativeTo(null);
        
        //<editor-fold defaultstate="collapsed" desc=" Ícone do programa ">
        Image imagemTitulo = Toolkit.getDefaultToolkit().getImage("Imagem");  
        this.setIconImage(imagemTitulo);
        //</editor-fold>
        
        setDefaultCloseOperation(NovoCusto.HIDE_ON_CLOSE);
    }
    //</editor-fold>   

    //<editor-fold defaultstate="collapsed" desc=" Botão"Resetar" ">
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        jTextField5.setText("");
    }                                        
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc=" Botão"Sair" ">
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        this.dispose();
    }                                        
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc=" Botão"Salvar" ">
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        NovoCustoFunc ncf = new NovoCustoFunc();
        ncf.nomefunc = jTextField1.getText();
        ncf.gs = jTextField2.getText();
        ncf.cc = Integer.parseInt(jTextField3.getText());
        ncf.atividade = jTextField4.getText();
        ncf.valor = Double.parseDouble(jTextField5.getText().replaceAll(",", "."));
        listanovocf.add(ncf);
        Teste("Teste", listanovocf);
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        jTextField5.setText("");        
    }                                        
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc=" main ">
    public static void main(String args[]) {

       java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new NovoCusto().setVisible(true);
            }
        });
    }
    //</editor-fold>
          
    //<editor-fold defaultstate="collapsed" desc=" Teste ">
    public void Teste(String titulo, Collection<NovoCustoFunc> collection){
        System.out.println(titulo);
        for (NovoCustoFunc str: collection) {
            System.out.print(str.nomefunc);
            System.out.print(" || "+str.gs);
            System.out.print(" || "+str.cc);
            System.out.print(" || "+str.atividade);
            System.out.println(" || "+str.valor);
        }
    }
    //</editor-fold>
}

O pior é que eu uso o ArrayList só nessa classe. :frowning:

xandelol

Alguém?

Criado 15 de março de 2013
Ultima resposta 18 de mar. de 2013
Respostas 6
Participantes 3