addKeyListener e JTextField (2) (Resolvido)

Deixa ver se assim me explico melhor:
Do jeito que esta o código a seguir funciona BLZ, a cada vez que mexo em algum dos dós campos o método testaBtnGravar() é chamado:

[code]getContentPane().add(txtData);
txtData.setBounds(60, 110, 70, 20);

     txtData.addKeyListener(new java.awt.event.KeyListener() {            
	 public void keyPressed(KeyEvent e) {	
			testaBtnGravar();	   
     }
	 public void keyReleased(KeyEvent e){
		    testaBtnGravar();
     }
	 public void keyTyped(KeyEvent e)   {		
			testaBtnGravar();	}
     });

getContentPane().add(txtValor);
txtValor.setBounds(230, 110, 70, 20);

    txtValor.addKeyListener(new java.awt.event.KeyListener() {
 
	public void keyPressed(KeyEvent e) {	
			testaBtnGravar();	   
    }
	public void keyReleased(KeyEvent e){
		    testaBtnGravar();
    }
    public void keyTyped(KeyEvent e)   {		
			testaBtnGravar();	}
    });

public void testaBtnGravar(){
if ((txtValor.getText().equals("")) | (txtData.getText().equals(""))){
btnGravar.setEnabled(false);
}else {btnGravar.setEnabled(true);
}
}[/code]
Agora quando insero uma mascara no txtData os métodos da KeyListener instanciada no txtData não funcionam e como se eu não estivesse mexendo no txtData:

[code]MaskFormatter mskData;
try {
mskData = new MaskFormatter("##/##/####");
mskData.setPlaceholderCharacter(’_’);
txtData = new JFormattedTextField(mskData);
txtData.setBounds(60, 110, 70, 20);
getContentPane().add(txtData, null);

    }catch (ParseException e) { 
        e.printStackTrace(); 
    }

getContentPane().add(txtValor);
txtValor.setBounds(230, 110, 70, 20);

    txtValor.addKeyListener(new java.awt.event.KeyListener() {
 
	public void keyPressed(KeyEvent e) {	
			testaBtnGravar();	   
    }
	public void keyReleased(KeyEvent e){
		    testaBtnGravar();
    }
    public void keyTyped(KeyEvent e)   {		
			testaBtnGravar();	}
    });[/code]

Desculpa ae galera, ainda nao saco muito de Java, so basico mesmo.

O erro de besta…
eu tinha declarado o txtData assim…

txtData = new javax.swing.JTextField();

quando tinha que ser assim

txtData = new javax.swing.JFormattedTextField();

Valeu galera…