Ajuda com ouvintes de telas!

Olá galera… .estou tentdo um problema com meus ouvintes de tela aqui e gostaria da ajuda do pessoal do fórum!!!
Tipo galera… eu construi uma tela TelaExcluirMercadoria, e também tenho outras telas como TelaCadMercadoria e tals… Construi um método para setar os ouvintes das telas jogando para o meu ControleMercadoria que está tratando as minhas telas!!!
Os ouvintes da TelaCadMercadoria estão ótimos… só que os ouvintes da outra tela TelaExcluirMercadoria não estão funcionando!!!
Segue o código do ControleMercadoria():


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.Mercadoria;
import visao.TelaCadMercadoria;
import visao.TelaConsultaMercadoria;
import visao.TelaExcluirMercadoria;
import dao.DAOFactory;
import dao.DAOMercadoria;

public class ControleMercadoria implements ActionListener {

	DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
	DAOMercadoria dao = df.getDAOMercadoria();
	private TelaCadMercadoria telaCadMercadoria=null;
	private Vector <Mercadoria> vetor;
	private DefaultTableModel tabelaModel;
	private String[] campos = {"Tipo","Descrição","Codigo","Quantidade","Preço de Compra","Preço de Venda","Data de cadastro do produto"};
	private String codigo;
	TelaConsultaMercadoria telaConsultaMercadoria ;
	TelaExcluirMercadoria telaExcluirMercadoria;
	Mercadoria mercadoria = new Mercadoria();
	
	
	public ControleMercadoria (TelaCadMercadoria telaCadMercadoria, TelaExcluirMercadoria telaExcluirMercadoria){
		this.telaCadMercadoria = telaCadMercadoria;
		this.telaExcluirMercadoria = telaExcluirMercadoria;
		
		telaExcluirMercadoria.setOuvinte(this);
		telaCadMercadoria.setOuvinte(this);
		
		
	}// fim do construtor

	
	
	public void actionPerformed(ActionEvent evt) {
		String comando = evt.getActionCommand();
		
		if (comando.equals("cadastrar")){
			
			if (telaCadMercadoria.verificaCampos(telaCadMercadoria.getCamposOk())){
				try {
				Mercadoria mercadoria = new Mercadoria();
				
				telaCadMercadoria.getDadosGerais(mercadoria);
				dao.cadastrar(mercadoria);
				JOptionPane.showMessageDialog(null,"Mercadoria cadastrada com sucesso!","Mercadoria cadastrada",JOptionPane.PLAIN_MESSAGE);
				telaCadMercadoria.limpaCampos();
				
				}
				catch (Exception e){
					JOptionPane.showMessageDialog(null,"Erro durante a gravação da nova mercadoria :" +e,"ERRO",JOptionPane.ERROR_MESSAGE);
				}
			}
			else
				JOptionPane.showMessageDialog(null,"Os campos sinalizados com  *  são de preenchimento obrigatório!", "ATENÇÂO", JOptionPane.WARNING_MESSAGE);
			
		}
		else
			if (comando.equals("limpar")){
				telaCadMercadoria.limpaCampos();
			}
			else
				if (comando.equals("consultar")){
										
					TelaConsultaMercadoria telaConsultaMercadoria = new TelaConsultaMercadoria();
					telaConsultaMercadoria.setSize(475,590);
					telaConsultaMercadoria.setLocation(200,200);
					telaConsultaMercadoria.setResizable(false);
					telaConsultaMercadoria.setVisible(true);
					
				}
				else
					if (comando.equals("sair")){
						telaCadMercadoria = new TelaCadMercadoria();
						telaCadMercadoria.dispose();
					}
		
					if (comando.equals("excluir")){
						
						mercadoria.setCodigo(JOptionPane.showInputDialog(null,"Digite o número do código da mercadoria: ","Excluir Mercadoria",JOptionPane.QUESTION_MESSAGE));
						codigo = mercadoria.getCodigo();
						mercadoria = dao.consultar(mercadoria);
						
						if (mercadoria.getCodigo()!= null){
							TelaExcluirMercadoria telaExcluirMercadoria = new TelaExcluirMercadoria();
							telaExcluirMercadoria.setSize(300,300);
							telaExcluirMercadoria.setLocation(200,200);
							telaExcluirMercadoria.setResizable(false);
							telaExcluirMercadoria.setVisible(true);
							
						
						}// fim do if primeiro interno
						else
							JOptionPane.showMessageDialog(null,"Mercadoria não cadastrada!!","ERRO",JOptionPane.ERROR_MESSAGE);
					}//fim do tratamnte do excluir (pelo menu Excluir mercadoria da telaCadMercadoria)
					
						if (comando.equals("bCancelar")){
								telaExcluirMercadoria = new TelaExcluirMercadoria();
								telaExcluirMercadoria.dispose();
							}
							else
								if (comando.equals("bExcluir")){
										
									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 x = codigo;
										mercadoria.setCodigo(codigo);
										telaExcluirMercadoria = new TelaExcluirMercadoria();		
										dao.excluir(mercadoria);
										JOptionPane.showMessageDialog(null,"Mercadoria excluída com sucesso!","Exclusão de mercadoria",JOptionPane.INFORMATION_MESSAGE);
										telaExcluirMercadoria.dispose();
									
									}
									else
										telaExcluirMercadoria.dispose();
							
				}// fim do tratamento do bExcluir
			
	}// fim do ActionPerformed
	
	
	


	//dadosMercadorias
	public String[][] dadosMercadorias(Vector<Mercadoria> vetor){
		int tam=0;
		tam = vetor.size();
		String[][] dMercadoria = new String[tam][7];
		for(int z=0;z < tam;z++){
			dMercadoria[z][0] = vetor.get(z).getTipo();
			dMercadoria[z][1] = vetor.get(z).getDescricao();
			dMercadoria[z][2] = vetor.get(z).getCodigo();
			dMercadoria[z][3] = vetor.get(z).getQuantidade();
			dMercadoria[z][4] = vetor.get(z).getPrecoCompra();
			dMercadoria[z][5] = vetor.get(z).getPrecoVenda();
			dMercadoria[z][6] = vetor.get(z).getData();
			
 
			
			
		}//fim do for
		return dMercadoria;
	} //fim do dadosUsuarios 


	//dadosEmVetor
	public Vector<Mercadoria> dadosEmVetor(){
		dao.resultDados();
		vetor = new Vector<Mercadoria>(30,10);
		try{
			String resultDados[][] = dao.getDados();
			int tam = resultDados.length;
			for (int i=0; i<tam; i++){
				String tipo = resultDados[i][0];
				String descricao = resultDados[i][1];
				String codigo = resultDados[i][2];
				String quantidade = resultDados[i][3];
				String precoCompra = resultDados[i][4];
				String precoVenda = resultDados[i][5];
				String data = resultDados[i][6];
				
				
				Mercadoria mercadoria = new Mercadoria();
				mercadoria.setTipo(tipo);
				mercadoria.setDescricao(descricao);
				mercadoria.setCodigo(codigo);
				mercadoria.setQuantidade(quantidade);
				mercadoria.setPrecoCompra(precoCompra);
				mercadoria.setPrecoVenda(precoVenda);
				mercadoria.setData(data);
				
				
				
				vetor.add(mercadoria);
			}//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 DefaultTableModel getTabelModelConsulta(){
		dadosEmVetor();
		String dMercadoria[][] = dadosMercadorias(dadosEmVetor());
		tabelaModel = new DefaultTableModel(dMercadoria,campos);
		return tabelaModel;
	}

	
	

	public String[][] filtraConsulta(int caso, int tam){
		try{
			Vector<Mercadoria> vetor = new Vector<Mercadoria>(30,10);
			Vector<Mercadoria> vetorAux = new Vector<Mercadoria>(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).getDescricao().length()) >= (tam)){
					switch(caso){
						case 1:
							aux = vetor.get(k).getDescricao().substring(0,TelaConsultaMercadoria.txtConsulta.getText().length());
							break;
						case 2:
							//aux = vetor.get(k).getDescricao().substring(0,FClienteAlterar.tTitulo.getText().length());
							break;
						case 3:
							//aux = vetor.get(k).getDescricao().substring(0,FClienteExcluir.tTitulo.getText().length());
							break;
					}//fim do switch
					switch(caso){
						case 1:{
							if(TelaConsultaMercadoria.txtConsulta.getText().equalsIgnoreCase(aux)){
								vetorAux.add(vetor.get(k));
							}//do if interno
							break;
						}//fim do caso 1
						/*
						case 2:{
							if(telaAlterarMercadoria.tTitulo.getText().equalsIgnoreCase(aux)){
								vetorAux.add(vetor.get(k));
							}//fim do if interno
							break;
						}//fim do caso 2
						case 3:{
							if(telaExcluirMercadoria.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 = dadosMercadorias(vetorAux);
		return d;
		}//fim do try
		catch(StringIndexOutOfBoundsException e){
			JOptionPane.showMessageDialog(null, "Erro durante a filtragem da consulta :"+e,"ERRO",JOptionPane.ERROR_MESSAGE);
			return null;
		}//fim do catch
			
	}//fim do metodo filtra consulta

	public void atualiza(){
		dao.resultDados();
		tabelaModel.setDataVector(dadosMercadorias(dadosEmVetor()),campos);
		tabelaModel.fireTableStructureChanged();
	}









}// fim da classe

Agora o código da minha TelaExcluirMercadoria ():


package visao;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import controle.ControleMercadoria;

public class TelaExcluirMercadoria extends JFrame{

	private JPanel pnl1,pnl2,pnl3;
	private JLabel lblDescricao,lblTipo;
	private JButton btnExcluir,btnCancelar;
	private JTextField txtDescricao,txtTipo;
	Container c;
	private String tipo,descricao;
	TelaExcluirMercadoria telaExcluirMercadoria ;
	TelaCadMercadoria telaCadMercadoria;
	
	
	public TelaExcluirMercadoria (){
		super ("Exclusão de mercadoria");
		//ControleMercadoria controle = new ControleMercadoria(telaCadMercadoria,telaExcluirMercadoria);
		c = getContentPane();
		c.setLayout(new BorderLayout());
		
		pnl1 = new JPanel();
		pnl1.setLayout(new FlowLayout(0));
		lblTipo = new JLabel ("Tipo da mercadoria :");
		txtTipo = new JTextField(20);
		txtTipo.setEditable(false);
		pnl1.add(lblTipo);
		pnl1.add(txtTipo);
		
	
		pnl2 = new JPanel();
		pnl2.setLayout(new FlowLayout(0));
		lblDescricao = new JLabel("Descrição da Mercadoria :");
		txtDescricao = new JTextField(30);
		txtDescricao.setEditable(false);
		pnl2.add(lblDescricao);
		pnl2.add(txtDescricao);
		
		pnl3 = new JPanel();
		pnl3.setLayout(new FlowLayout(0));
		btnExcluir = new JButton("Excluir");
		btnExcluir.setActionCommand("bExcluir");
		btnExcluir.setIcon(new ImageIcon("excluir.gif"));
		btnExcluir.setToolTipText("Clicando aqui você estará excluindo a mercadoria do estoque definitivamente!!");
		
		btnCancelar = new JButton ("Cancelar");
		btnCancelar.setActionCommand("bCancelar");
		btnCancelar.setIcon(new ImageIcon("icCancelar.png"));
		btnCancelar.setToolTipText("Clicando aqui você não exclui a mercadoria e retorna ao menu principal!");
		btnCancelar.setDefaultCapable(true);
		
		pnl3.add(btnExcluir);
		pnl3.add(btnCancelar);
		
		c.add(pnl1,BorderLayout.NORTH);
		c.add(pnl2,BorderLayout.CENTER);
		c.add(pnl3,BorderLayout.SOUTH);

	
     	//btnExcluir.addActionListener(controle);
		//btnCancelar.addActionListener(controle);
		
	}// fim do construtor
	
	public void setOuvinte (ActionListener controle){
		btnExcluir.addActionListener(controle);
		btnCancelar.addActionListener(controle);
	}



	public JTextField getTxtTipo() {
		return txtTipo;
	}





	public void setDados(String tipo, String descricao){
		this.tipo = tipo;
		this.descricao = descricao;
		
	}
	
	
}

Como devem perceber em alguns comentários, estava tentando fazer com uma espécie de classe interna anônima para tratar os eventos… mas tive problemas na hora de excluir pois quando criava um objeto da TelaExcluirMercadoria ela criava também uma nova instância do controle e eu perdia os dados que coletei lá!!!
Me ajuda ae pessoaaaaaaaaaaal!!!

UPPPPPPPP!!!

Ajuda ae galeraaaaaaaaaa!!

Dá uma olhada neste post.

http://emdia.wordpress.com/2008/11/04/jframe-com-listener/