Duvida no ArrayList

2 respostas
io_Lemes

Olá galera, gostaria que alguém me ajudasse, estou querendo manipular (salvar, pesquisar e excluir) os valores de de cada objeto em uma arrayList, e ai esta a minha dificuldade, pois estou programando em camadas e não estou conseguindo fazer um método onde ele faz a consuta dentro do arrayList, eu criei um botão proximo e um anterior para poder listar os dados setando no JTextField, embaixo esta o meu código para ver como ja está:

esta é a primeira classe onde esta a parte os componentes grafico

package camada_visao;
import java.awt.event.*;
import java.text.ParseException;
import javax.swing.*;
import javax.swing.text.MaskFormatter;
import camada_processamento.Aluno;
import camada_bancodedados.AlunoMemoria;

public class CadastrarAluno extends JFrame{

//	declarando os objetos
	private Aluno aluno;
	private AlunoMemoria lista;
	private JPanel painel;
	private JLabel lbMatricula, lbNome, lbEndereco, lbCidade, lbMensalidade, lbNascimento, lbUF;
	private JTextField tfMatricula, tfNome, tfEndereco, tfCidade;
	private JFormattedTextField jftfMensalidade, jftfNascimento;
	private MaskFormatter mfMensalidade, mfNascimento;
	private JSpinner jsEstado;
	private SpinnerListModel slmEstado;
	private JButton btIncluir, btEditar, btGravar, btCancelar, btExcluir, btAnterior, btProximo;
	private SpinnerModel smEstado;
	private int i;
	private boolean val;
	
	public CadastrarAluno(){
		super("Cadastro de Alunos");
		
		i = 1;
		val = true;
//	inciando os objetos	
		try{
			mfMensalidade = new MaskFormatter("R$ ******");
			mfMensalidade.setValidCharacters
			(".[telefone removido]");
			mfNascimento = new MaskFormatter("**/**/****");
			mfNascimento.setValidCharacters
			("[telefone removido]");
		}
		catch(ParseException e){
			e.printStackTrace();
		}	
	
	aluno = new Aluno();	
	lista = new AlunoMemoria();
	tfMatricula = new JTextField();
	tfNome = new JTextField();
	tfEndereco = new JTextField();
	tfCidade = new JTextField();
	jftfMensalidade = new JFormattedTextField(mfMensalidade);
	jftfNascimento = new JFormattedTextField(mfNascimento);
	lbMatricula = new JLabel("Núm. Matrícula");
	lbNome = new JLabel("Nome do Aluno");
	lbEndereco = new JLabel("Endereço");
	lbCidade = new JLabel("Cidade");
	lbMensalidade = new JLabel("Valor Mensalidade");
	lbNascimento = new JLabel("Data Nascimento");
	lbUF = new JLabel("Uf");
	slmEstado = new SpinnerListModel(
			new String []{"","Ac","Mt","Ro"});
	jsEstado = new JSpinner(slmEstado);
	btIncluir = new JButton("Incluir");
	btEditar = new JButton("Editar");
	btGravar = new JButton("Gravar");
	btCancelar = new JButton("Cancelar");
	btExcluir = new JButton("Excluir");
	btAnterior = new JButton("Anterior");
	btProximo = new JButton("Próximo");	
		
		setSize(700,400);
		
		painel = new JPanel();
	
		tfMatricula.setBounds(140,30,100,25);
		tfNome.setBounds(140,70,500,25);
		tfEndereco.setBounds(140,110,500,25);
		tfCidade.setBounds(140,150,300,25);
		jftfMensalidade.setBounds(140,190,150,25);
		jftfNascimento.setBounds(140,230,150,25);
		lbMatricula.setBounds(50,30,130,25);
		lbNome.setBounds(50,70,120,25);
		lbEndereco.setBounds(80,110,100,25);
		lbCidade.setBounds(90,150,100,25);
		lbMensalidade.setBounds(30,190,130,25);
		lbNascimento.setBounds(40,230,130,25);
		lbUF.setBounds(470,150,30,25);
		jsEstado.setBounds(500,150,50,25);
		btIncluir.setBounds(20,300,100,25);
		btEditar.setBounds(150,300,100,25);
		btGravar.setBounds(280,300,100,25);
		btCancelar.setBounds(410,300,100,25);
		btExcluir.setBounds(540,300,100,25);
		btAnterior.setBounds(430,30,100,25);
		btProximo.setBounds(540,30,100,25);
		
		tfMatricula.enable(false);
		tfNome.enable(false);
		tfEndereco.enable(false);
		tfCidade.enable(false);
		jftfMensalidade.enable(false);
		jftfNascimento.enable(false);
		
		
		final JButton btSim = new JButton("Sim");
		btSim.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JOptionPane.showMessageDialog(null, "Registro excluído com sucesso!");	
			}
			
		});
		
		btIncluir.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				
				val = false;
				
				tfMatricula.setText(String.valueOf(i));
				tfNome.setText("");
				tfEndereco.setText("");
				tfCidade.setText("");
				jftfMensalidade.setText("");
				jftfNascimento.setText("");
				jsEstado.setValue("");				
				
				tfNome.enable(true);
				tfEndereco.enable(true);
				tfCidade.enable(true);
				jftfMensalidade.enable(true);
				jftfNascimento.enable(true);
			}
		});
		
		btEditar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				
				val = false;
				
				tfNome.enable(true);
				tfEndereco.enable(true);
				tfCidade.enable(true);
				jftfMensalidade.enable(true);
				jftfNascimento.enable(true);				
			}
		});
		
		btGravar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				
				if(tfMatricula.getText().isEmpty()){
					JOptionPane.showMessageDialog(null, "Informe Núm. Matrícula");
				}
				else if(tfNome.getText().isEmpty()){
					JOptionPane.showMessageDialog(null, "Informe Nome");
				}
				else if(tfEndereco.getText().isEmpty()){
					JOptionPane.showMessageDialog(null, "Informe Endereço");
				}
				else if(tfCidade.getText().isEmpty()){
					JOptionPane.showMessageDialog(null, "Informe Cidade");
				}
				else{
					aluno.setCodigo(tfMatricula.getText());
					aluno.setNome(tfNome.getText());
					aluno.setEndereco(tfEndereco.getText());
					aluno.setCidade(tfCidade.getText());
					aluno.setUf(jsEstado.getValue().toString());
					aluno.setMensalidade(jftfMensalidade.getText());
					aluno.setNascimento(jftfNascimento.getText());
					lista.salvar(aluno);
					
					JOptionPane.showMessageDialog(null, "Aluno cadastrado com sucesso");
					i = Integer.parseInt(tfMatricula.getText());
					i=i+1;
					tfMatricula.setText("");
					tfNome.setText("");
					tfEndereco.setText("");
					tfCidade.setText("");
					jftfMensalidade.setText("");
					jftfNascimento.setText("");
					jsEstado.setValue("");
					tfMatricula.enable(false);
					tfNome.enable(false);
					tfEndereco.enable(false);
					tfCidade.enable(false);
					jftfMensalidade.enable(false);
					jftfNascimento.enable(false);
					val = true;
				}
			}			
		});
		
		btCancelar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				
				val = true;
				
				tfMatricula.setText("");
				tfNome.setText("");
				tfEndereco.setText("");
				tfCidade.setText("");
				jftfMensalidade.setText("");
				jftfNascimento.setText("");
				jsEstado.setValue("");
				tfMatricula.enable(false);
				tfNome.enable(false);
				tfEndereco.enable(false);
				tfCidade.enable(false);
				jftfMensalidade.enable(false);
				jftfNascimento.enable(false);
			}
		});
		
		btExcluir.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				
				if(tfMatricula.getText().isEmpty()){
					JOptionPane.showMessageDialog(null, "Selecione um aluno");
				}
				else{

				Object []options = new Object[2];

					options[0] = btSim;
					options[1] = "Não";

					JOptionPane.showOptionDialog(null, "Deseja realmente excluir este registro?", "Atenção", 
							JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
							null, options, options[0]);
				}
			}
		});
		
		btProximo.addActionListener(new ActionListener(){   //este é o método onde chama o metodo getAluno na classe AlunoMemoria
			public void actionPerformed(ActionEvent e) {
				
				if(val == true){
					aluno = lista.getAluno(1);
					tfMatricula.setText(aluno.getCodigo());
					tfNome.setText(aluno.getNome());
					tfEndereco.setText(aluno.getEndereco());
					tfCidade.setText(aluno.getCidade());
					jftfMensalidade.setText(aluno.getMensalidade());
					jftfNascimento.setText(aluno.getNascimento());
					jsEstado.setValue(aluno.getUf());
					
				JOptionPane.showMessageDialog(null, "lista: ");
				}
				else{}
			}
		});
		

		
		painel.add(tfMatricula);
		painel.add(tfNome);
		painel.add(tfEndereco);
		painel.add(tfCidade);
		painel.add(jftfMensalidade);
		painel.add(jftfNascimento);
		painel.add(lbMatricula);
		painel.add(lbNome);
		painel.add(lbEndereco);
		painel.add(lbCidade);
		painel.add(lbMensalidade);
		painel.add(lbNascimento);
		painel.add(lbUF);
		painel.add(jsEstado);
		painel.add(btIncluir);
		painel.add(btEditar);
		painel.add(btGravar);
		painel.add(btCancelar);
		painel.add(btExcluir);
		painel.add(btAnterior);
		painel.add(btProximo);
		
		painel.setLayout(null);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setContentPane(painel);
	}
	public static void main(String[]args){
		
		CadastrarAluno newFrame = new CadastrarAluno();
	}
}

esta é a segunda classe, onde estão os meus atributos com os metodos get e set

package camada_processamento;


public class Aluno {

	private String codigo, nome, endereco, cidade, uf, mensalidade, nascimento;

	public String getCodigo() {	
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public String getMensalidade() {
		return mensalidade;
	}
	public void setMensalidade(String mensalidade) {
		this.mensalidade = mensalidade;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getUf() {
		return uf;
	}
	public void setUf(String uf) {
		this.uf = uf;
	}
	public String getNascimento() {
		return nascimento;
	}
	public void setNascimento(String nascimento) {
		this.nascimento = nascimento;
	}
}

e esta é a terceira classe onde esta o arraylist

package camada_bancodedados;
import java.util.ArrayList;
import java.util.Iterator;

import camada_processamento.Aluno;

public class AlunoMemoria {

	ArrayList alunos = new ArrayList();
	Aluno dados = new Aluno();

	public void salvar(Aluno value) {
		alunos.add(value);
	}

	public Aluno getAluno(int codigo) {   //este é o método que deveria fazer a consulta no arrayList onde é chamar pelo botão proximo e anterior
		dados = alunos.get(codigo);
		return dados;
	}
}

é isto, espero que alguém possa me ajudar

2 Respostas

C

Deixa eu ver se entendi tu quer passar um codigo para o método e esse método retornar o aluno que possue aque codigo né?

Faz assim...

Primeiramente quando tu criar o array list cria dessa forma:

List<Aluno> list = new ArrayList<Aluno>();

isso te traz vantagem pois ele já vai tratar os objetos que estão dentro da lista como alunos...
caso vc nao declare toda vez que vc fizer um list.get(0) você terá que fazer um cast para utilizar métodos da classe aluno...

já o método tu faz assim...

se vc tiver:

ArrayList<Aluno> alunos = new ArrayList<Aluno>();

public Aluno getAluno(int codigo){
     
       Aluno alunoReturn = null;
  
       for(Aluno aluno : alunos){
                
                 if(aluno.getCodigo() == codigo){
                         alunoReturn = aluno;
                 }
       }
       return aluno;
}

se não:

ArrayList alunos = new ArrayList();

public Aluno getAluno(int codigo){
     
       Aluno alunoReturn = null;
  
       for(Object aluno : alunos){
                
                 if(((Aluno)aluno).getCodigo() == codigo){
                         alunoReturn = (Aluno)aluno;
                 }
       }
       return aluno;
}

espero ter ajudaadoo... vlwz

io_Lemes

Ajudou sim amigo, muito obrigado!!

Criado 16 de setembro de 2010
Ultima resposta 1 de out. de 2010
Respostas 2
Participantes 2