Ajuda com chamda de método e contrutor!

2 respostas
andre_bento
Fala ae galera... po to tentando resolver um problema aqui n omeu código mas tá sinistro... esse problema tá consumindo meus miolos aqui ¬¬' Po é o seguinte...Eu estou fazendo chamada a um controle de um outro controle... Possuo o controleCadCliente... que se o usuário clicar na opção excluir cliente eu chamo o meu controleExcluiCliente e chamo meu método consultar exclusão;.... segue o código:
if (comando.equals("excluir")){
				telaExcluiCliente = new TelaExcluiCliente ();
				ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
				controleExcluiCliente.consultarExclusao();
			}
Agora o meu método consultar exclusão na minha classe ControleExcluiCliente :
public Cliente consultarExclusao(){
			try{
				 
				codigoExclusao = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigoExclusao);
				cliente=dao.consultar(cliente); 
				
				if (cliente.getNome() != null){
					JOptionPane.showMessageDialog(null, "NOME"+ cliente.getNome());
					TelaExcluiCliente telaExcluiCliente = new TelaExcluiCliente();
					ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
					/*Aqui está o problema... pois se crio um novo objeto de controleExcluiCliente
					 * os dados que foram preenchidos anteriormente e armazenados em minhas variáveis são
					 * perdidos... mas se eu não crio meu controle aqui minha tela fica sem ouvinte para os 
					 * listeners!!!
					 */
					telaExcluiCliente.setSize(800,600);
					telaExcluiCliente.setLocation(200,200);
					telaExcluiCliente.setVisible(true);
					telaExcluiCliente.setDados(cliente);
					codigoExclusao = cliente.getCodigo();
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);
				return null;
				
			}
		return cliente;	
	 }
Estoiu criando 2 objetos e por isso perdendo o valor das variáveis... Mas não sei como vou conseguir resolver o problema... segue o código de toda a classe :
package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaCadCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;
 
public class ControleExcluiCliente  implements ActionListener {

	 String codigoExclusao;
	 private TelaExcluiCliente telaExcluiCliente,telaExcluiCliente2;
	 Cliente cliente = new Cliente();
	 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
	 DAOCliente dao = df.getDAOCliente();
	 TelaCadCliente telaCad = new TelaCadCliente() ;
	
	 ControleCadCliente cCliente = new ControleCadCliente(telaCad);
	
	 
	 
	 public ControleExcluiCliente (TelaExcluiCliente telaExcluiCliente){
		 this.telaExcluiCliente = telaExcluiCliente;
		/*Com esse JOptionPane pude ver que estava chmando a classe 2vezes!!
 */
                                JOptionPane.showMessageDialog(null, "FOI AQUI");
		 telaExcluiCliente.setOuvinte(this);
		 
	 }// fim do construtor
	
	 
	 	 
	 public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		
		}
		if (comando.equals("excluir")){
			 
			
			 Object [] opcoes = {" Sim "," Não "};
			 int n = JOptionPane.showOptionDialog(null, "Você tem certeza de que deseja excluir o cliente selecionado?", "Confirmar Exclusão", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);
 			
			if (n==0){
				String codigo = cCliente.getCliente().getCodigo();
				cliente.setCodigo(codigo);		
				if (cliente.getCodigo()==null){
					JOptionPane.showMessageDialog(null,"MERDA "+cliente.getCodigo());
				}
				dao.excluir(cliente);
				fechar();
				
			}
			
			
		}
	} 
	
	 
	 public Cliente consultarExclusao(){
			try{
				 
				codigoExclusao = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigoExclusao);
				cliente=dao.consultar(cliente); 
				
				if (cliente.getNome() != null){
					JOptionPane.showMessageDialog(null, "NOME"+ cliente.getNome());
					TelaExcluiCliente telaExcluiCliente = new TelaExcluiCliente();
					ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
					/*Aqui está o problema... pois se crio um novo objeto de controleExcluiCliente
					 * os dados que foram preenchidos anteriormente e armazenados em minhas variáveis são
					 * perdidos... mas se eu não crio meu controle aqui minha tela fica sem ouvinte para os 
					 * listeners!!!
					 */
					telaExcluiCliente.setSize(800,600);
					telaExcluiCliente.setLocation(200,200);
					telaExcluiCliente.setVisible(true);
					telaExcluiCliente.setDados(cliente);
					codigoExclusao = cliente.getCodigo();
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);
				return null;
				
			}
		return cliente;	
	 }
	
	 public void fechar (){
		
		telaExcluiCliente.dispose();
	}
	
	 
	
	
	
}
Classe ControleCadCliente :
package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

import modelo.Cliente;
import visao.TelaAlterarCliente;
import visao.TelaCadCliente;
import visao.TelaConsultaCliente;
import visao.TelaExcluiCliente;
import visao.TelaTable;
import dao.DAOCliente;
import dao.DAOFactory;


public class ControleCadCliente implements ActionListener {
	
		 private String codigoExclusao;
		 private TelaCadCliente tela ;	
		 private TelaConsultaCliente telaConsulta = new TelaConsultaCliente();
		 private TelaExcluiCliente telaExcluiCliente;
		 private TelaAlterarCliente telaAlterarCliente = new TelaAlterarCliente();
		 private Vector <Cliente> vetor;
		 Cliente cliente = new Cliente();
		 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
		 DAOCliente dao = df.getDAOCliente();
		 private DefaultTableModel tabelaModel;
		 private String[] campos = {"Nome","Endereço","Identidade","Código","Telefone"};
		 ControleExcluiCliente controleExcluiCliente2;
		 
 	public ControleCadCliente(TelaCadCliente tela){
 		
 				
		this.tela = tela;
		
		//ativa os Listeners
		tela.setOuvinte(this);
 	}


	public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		 }
		 else
			 if (comando.equals("cadastrar")){
				
				 if (tela.verificaCampos(tela.getCamposOk())){
					try{
						 Cliente cliente = new Cliente();
						 ControleCadCliente controle = new ControleCadCliente(tela);
						 TelaCadCliente cl = new TelaCadCliente();
						 
						 tela.mudaDados(cliente);
						 
												 
						 dao.cadastrar(cliente);
						 JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!","Cadastro de cliente",JOptionPane.INFORMATION_MESSAGE);
						 tela.limpaCampos();
					
					}
				 
					catch (Exception e){
						JOptionPane.showMessageDialog (null, "Erro durante a gravação do novo cliente! :"+e,"ERRO",JOptionPane.ERROR_MESSAGE);
						}
					
					}
				 
				 
				 
				 else
					 JOptionPane.showMessageDialog (null, "Os campos sinalizados com  *  são de preenchimento obrigatório!", "ATENÇÂO", JOptionPane.WARNING_MESSAGE);
			 }
		

					if (comando.equals("consultar")){
			
							ControleConsultaCliente ctrlConsultaCliente = new ControleConsultaCliente(telaConsulta);
							ctrlConsultaCliente.consultar();
			} 
				else
						 
			if (comando.equals("excluir")){
				telaExcluiCliente = new TelaExcluiCliente ();
				controleExcluiCliente2 = new ControleExcluiCliente(telaExcluiCliente);
				cliente = controleExcluiCliente2.consultarExclusao();
			}
		
			   else
		
				   if (comando.equals("alterar")){
					   
				   }
		
			
		
			 else
				 if (comando.equals("limpar")){
					 tela.limpaCampos();
			}
		
			else
				if (comando.equals("visualizar")){
					TelaTable tTable = new TelaTable();
					tTable.setSize(475,590);
					tTable.setLocation(385,200);
					tTable.setVisible(true);
					tTable.setResizable(false);
					
				}
				
					 
	} 
	
	
	public void fechar (){
		tela.dispose();
	}

	
	public Cliente getCliente(){
		return cliente;
	}
	
	 public String consultarAlteracao(String codigo){

		 try{
			    Cliente cliente = new Cliente();
				codigo = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Alteração de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigo);
				dao.consultar(cliente);
			    
				if (cliente.getNome() != null){
					TelaAlterarCliente tela = new TelaAlterarCliente();
					ControleAlterarCliente controle = new ControleAlterarCliente(tela);
					tela.setSize(800,600);
					tela.setVisible(true);
					tela.setLocation(200,200);
					
					tela.setDados(cliente);
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);

				
			}
			
	 	
		 
		 return codigo;
	 }
	

	

	
	 public Cliente getConsultarExclusao(){
		 return cliente;
		 
	 }
	 
	 
public String getCodigoExclusao(){
	return codigoExclusao;
}


//dadosClientes
public String[][] dadosCliente(Vector<Cliente> vetor){
	int tam=0;
	tam = vetor.size();
	String[][] dCliente = new String[tam][5];
	for(int z=0;z < tam;z++){
		dCliente[z][0] = vetor.get(z).getNome();
		dCliente[z][1] = vetor.get(z).getEndereco();
		dCliente[z][2] = vetor.get(z).getIdentidade();
		dCliente[z][3] = vetor.get(z).getCodigo();
		dCliente[z][4] = vetor.get(z).getTel();
		
		
	}//fim do for
	return dCliente;
} //fim do dadosUsuarios 


//dadosEmVetor
public Vector<Cliente> dadosEmVetor(){
	dao.resultDados();
	vetor = new Vector<Cliente>(30,10);
	try{
		String resultDados[][] = dao.getDados();
		int tam = resultDados.length;
		for (int i=0; i<tam; i++){
			String nome = resultDados[i][0];
			String endereco = resultDados[i][1];
			String identidade = resultDados[i][2];
			String codigo = resultDados[i][3];
			String tel = resultDados[i][4];
			
			Cliente cliente = new Cliente();
			cliente.setNome(nome);
			cliente.setEndereco(endereco);
			cliente.setIdentidade(identidade);
			cliente.setCodigo(codigo);
			cliente.setTel(tel);
			
			vetor.add(cliente);
		}//fim do for
	}//fim do try
	catch(Exception e){
		JOptionPane.showMessageDialog(null,"Erro durante a gravação dos dados no vetor :"+e.getStackTrace(),"ERRO",JOptionPane.ERROR_MESSAGE);
	}
	
	return vetor;
}//fim do método dadosEmVetor

/*
public String[][] filtraConsulta(int caso, int tam){
	try{
		Vector<Cliente> vetor = new Vector<Cliente>(30,10);
		Vector<Cliente> vetorAux = new Vector<Cliente>(30,10);
		vetor = dadosEmVetor();
		String aux = null;
		//o primeiro for roda nos objetos<Alunos> do vetor
		//o for interno roda no campo nome<String> dos objetos<Alunos> do vetor
		for(int k=0;k < vetor.size();k++){
			//testa se o dado no vetor é maior ou igual que o que você está consultado
			//se for menor não entra na consulta. 
			if((vetor.get(k).getNome().length()) >= (tam)){
				switch(caso){
					case 1:
						aux = vetor.get(k).getNome().substring(0,FClienteConsultar.tConsulta.getText().length());
						break;
					case 2:
						aux = vetor.get(k).getNome().substring(0,FClienteAlterar.tTitulo.getText().length());
						break;
					case 3:
						aux = vetor.get(k).getNome().substring(0,FClienteExcluir.tTitulo.getText().length());
						break;
				}//fim do switch
				switch(caso){
					case 1:{
						if(FClienteConsultar.tConsulta.getText().equalsIgnoreCase(aux)){
							vetorAux.add(vetor.get(k));
						}//do if interno
						break;
					}//fim do caso 1
					case 2:{
						if(FClienteAlterar.tTitulo.getText().equalsIgnoreCase(aux)){
							vetorAux.add(vetor.get(k));
						}//fim do if interno
						break;
					}//fim do caso 2
					case 3:{
						if(FClienteExcluir.tTitulo.getText().equalsIgnoreCase(aux)){
							vetorAux.add(vetor.get(k));
						}//fim do if interno
						break;
					}//fim do caso 3
				
				}//fim do switch
			}//fim do if externo
		}//fim do for
	//transforma o vetor em dados
	String[][] d = dadosCliente(vetorAux);
	return d;
	}//fim do try
	catch(StringIndexOutOfBoundsException ex){
		System.out.print("Erro");
		return null;
	}//fim do catch
		
}//fim do metodo filtra consulta
*/

public DefaultTableModel getTabelModelConsulta(){
	dadosEmVetor();
	String dCliente[][] = dadosCliente(dadosEmVetor());
	tabelaModel = new DefaultTableModel(dCliente,campos);
	return tabelaModel;
}












}// fim da classe ControleCadCliente

Please galera.. .preciso muito da ajuda de vcs ae... me dêem uma luz de como posso resolver o problema... já tentei colocar o método consultarExclusao em meu controleCadCliente mas também não funfou legal!!!
Abraçossss!!

2 Respostas

T

Não entendi muito bem seu problema. Pode explicar melhor?

andre_bento

Olá amigo!!!

Bem o problema é o seguinte… Meu método de exclusão não está conseguindo excluir o cliente selecionado pelo usuário porque quando tento setar o código com o que o usuário digitou a minha variável codigoExclusao já está null porque estou fazendo duas chamadas no controle… quando chamo a segunda vez ele recria todas as variáveis novamente e ae perco todos os dados que foram pegos pela consulta no banco!!!
Mas não to sabendo como resolver esse problema!!
Abraço amig~çao… .qualquer dúvida posta ae!!!

Criado 19 de novembro de 2008
Ultima resposta 19 de nov. de 2008
Respostas 2
Participantes 2