Problema com array list

3 respostas
F

Bom galera, eu sempre tive grande problemas com array list e collection, entao to caindo matando emcima deles, eu estava trabalhando com cobol e agora estou voltado pro java novamente, pois bem, ai vai meu codigo pra vcs darem uma olhada

package br.com.array.swing;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.*;

import br.com.array.bin.FuncionarioBin;

public class TelaCadastro implements ActionListener{

	private JTextField tf1, tf2, tf3, tf4;
	private JLabel la1, la2, la3, la4;
	private JButton button;
	
	private JPanel panel;
	private JFrame frame;
		
	public void montaTelaCadastro(){
		la1 = new JLabel("Nome: ");
		la2 = new JLabel("Departamento: ");
		la3 = new JLabel("Data Adm");
		la4 = new JLabel("Salario: ");
				
		tf1 = new JTextField(20);
		tf2 = new JTextField(20);
		tf3 = new JTextField(10);
		tf4 = new JTextField(8);
		
		button = new JButton("Cadastra");
		button.addActionListener(this);
		
		panel = new JPanel();
		panel.add(la1);
		panel.add(tf1);
		panel.add(la2);
		panel.add(tf2);
		panel.add(la3);
		panel.add(tf3);
		panel.add(la4);
		panel.add(tf4);
		panel.add(button);
		
		frame = new JFrame("Cadastro Funcionario");
		frame.add(panel);
		
		frame.pack();
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		FuncionarioBin funcionario = new FuncionarioBin();
		funcionario.setNome(tf1.getText());
		funcionario.setDepartamento(tf2.getText());
		funcionario.setDataAdmicao(tf3.getText());
		funcionario.setSalario(Double.parseDouble(tf4.getText()));
		
		ArrayList<FuncionarioBin> list = new ArrayList<FuncionarioBin>();
		list.add(funcionario);
		
		tf1.setText(null);
		tf2.setText(null);
		tf3.setText(null);
		tf4.setText(null);
		
		System.out.println(list.size());
				
		System.out.println("Nome: " + funcionario.getNome());
		System.out.println("Departamento: " + funcionario.getDepartamento());
		System.out.println("Data Admição: " + funcionario.getDataAdmicao());
		System.out.println("Salario: " + funcionario.getSalario());
	}
	
	
}

a intençao aqui é que eu armazene os funcionarios na list e depois possa exibir todos eles, os sysout sao apenas para efeito de teste. Pois bem, eu sempre imprimo o tamanho da list, e mesmo gerando varios registros ele é sempre 1. Gostaria de saber oque esta errado.

att,

Fernando César Agrela

3 Respostas

peczenyj

vc adiciona como?

toda a vez que vc chamar o método actionPerformed vc cria um ArrayList e adiciona um funcionario. Vc não está persistindo esse ArrayList em lugar algum, ai fica dificil… Faz assim, coloca esse List como atributo da classe que vc começa a ir na direção certa.

F

haha
vlw… deu certo, isso q da fika bitolado so em um texo de codigo e nao ver o codigo por inteiro, fikei o dia inteiro hoj tentando fazer isso.

vlw

F

entao galera to com um outro problema aqui, percorrer o array.
meu codigo esta assim.

package br.com.array.swing;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.*;

import br.com.array.bin.FuncionarioBin;

public class TelaCadastro implements ActionListener{

	private JTextField tf1, tf2, tf3, tf4;
	private JLabel la1, la2, la3, la4;
	private JButton button, listar;
	
	private JPanel panel;
	private JFrame frame;
		
	ArrayList<FuncionarioBin> list = new ArrayList<FuncionarioBin>();
	
	public void montaTelaCadastro(){
		la1 = new JLabel("Nome: ");
		la2 = new JLabel("Departamento: ");
		la3 = new JLabel("Data Adm");
		la4 = new JLabel("Salario: ");
				
		tf1 = new JTextField(20);
		tf2 = new JTextField(20);
		tf3 = new JTextField(10);
		tf4 = new JTextField(8);
		
		button = new JButton("Cadastra");
		listar = new JButton("Imprimir");
	
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent evt1){
				FuncionarioBin funcionario = new FuncionarioBin();
				funcionario.setNome(tf1.getText());
				funcionario.setDepartamento(tf2.getText());
				funcionario.setDataAdmicao(tf3.getText());
				funcionario.setSalario(Double.parseDouble(tf4.getText()));
				
				list.add(funcionario);
				
				tf1.setText(null);
				tf2.setText(null);
				tf3.setText(null);
				tf4.setText(null);
				
				System.out.println(list.size());
				
			}
		});

		listar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent evt2){
				for(int cont = 0; cont < list.size(); cont++){
					System.out.println(list.get(cont));
					//aki ta a duvida... 
				}
			}
		});
				
		panel = new JPanel();
		panel.add(la1);
		panel.add(tf1);
		panel.add(la2);
		panel.add(tf2);
		panel.add(la3);
		panel.add(tf3);
		panel.add(la4);
		panel.add(tf4);
		panel.add(button);
		panel.add(listar);
		
		frame = new JFrame("Cadastro Funcionario");
		frame.add(panel);
		
		frame.pack();
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
	}
	
	public void actionPerformed1(ActionEvent e){
		FuncionarioBin funcionario = new FuncionarioBin();
		System.out.println("Nome: " + funcionario.getNome());
		System.out.println("Departamento: " + funcionario.getDepartamento());
		System.out.println("Data Admição: " + funcionario.getDataAdmicao());
		System.out.println("Salario: " + funcionario.getSalario());
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	
}

saida ta a seguinte:

br.com.array.bin.FuncionarioBin@1dd9891
br.com.array.bin.FuncionarioBin@14b6b02
br.com.array.bin.FuncionarioBin@5e8d7d

ok estou imprimindo o endereço de memoria dos objetos do meu array. Vou continuar procurando aqui oque fazer, mas se aguem der uma ajuda eu agradeço.

ty

edit - eu ja consegui a soluçao assim usando esse for, porem gostaria de saber como seria feito da maneita "antiga" no java. Que eu me lembre era por iterator né? E a duvvida esta em como fazer, vou continuar pesquisando.

for(FuncionarioBin obj : list)

Criado 26 de fevereiro de 2008
Ultima resposta 26 de fev. de 2008
Respostas 3
Participantes 2