Manipular o BACKSPACE no JTextField

Pessoal é o seguinte,

Estou implementando uma classe que adiciona uma máscara ao campo JTextField, que nesse caso é uma máscara específica para DATA, o que eu fiz foi que quando for pressionado a tecla BACKSPACE ao invés de apagar o número ele substitua com 0(zero). Exemplo: A data 10/08/2013 suponhamos que o cursor está no final do campo ao lado direito do número 3, quando o usuário pressionar a tecla BACKSPACE o número 3 é substituído pelo número 0 [10/08/2013, 10/08/2010, 10/08/2000, 10/08/2000, 10/08/0000, etc…] quando chegar ao fim, a data ficaria 00/00/0000.

Bom, mas isso eu já consegui realizar. Realizei a manipulação através de KeyListener com o método keyPressed.

Mas agora que vem o meu problema. Quero que quando todo o conteúdo do JTextField for selecionado e pressionado a tecla BACKSPACE o conteúdo seja apagado, deixando o campo vazio, só que a maneira que implementei pra manipular o BACKSPACE não deixa apagar o conteúdo.

Aqui está a maneira que fiz para manipular

[code]public void keyPressed(KeyEvent e) {// Ao pressionar BackSpace é substituído por 0 (zero)

    if(e.getKeyCode() == KeyEvent.VK_BACK_SPACE){
        try {
            if(jTextField.getCaretPosition()==3 || jTextField.getCaretPosition()==6){ // índice 3 e 6 são as barras, quando chegar na barra o salta para o número seguinte 
                super.remove(jTextField.getCaretPosition()-2, 1); // Remove o número
                super.insertString(jTextField.getCaretPosition()-1, "0", null); // Inseri 0(zero)
                jTextField.setCaretPosition(jTextField.getCaretPosition()-2); // Movimenta o cursor para trás
            }else{
                if(jTextField.getCaretPosition()!=0){ 
                    super.remove(jTextField.getCaretPosition()-1, 1);  // Remove o número
                    super.insertString(jTextField.getCaretPosition(), "0", null); // Inseri 0(zero)
                    jTextField.setCaretPosition(jTextField.getCaretPosition()-1); // Movimenta o cursor para trás
                }
            }
        } catch (BadLocationException ex) {
            Logger.getLogger(MaskFieldHB.class.getName()).log(Level.SEVERE, null, ex);
        }
        e.consume();
    }

}[/code]
Eu pensei em descobrir se todo o conteúdo do JTextField está selecionado para limpar todo o campo, mas não encontrei nada que pudesse me ajudar.

Alguém tem uma solução?

Só um detalhe: A máscara só aparece no campo quando ele estiver vazio e for pressionado o primeiro número (que no caso será o dia). Se por exemplo for digitado o número 2 e o campo estiver vazio, ficará assim 20/00/0000 e conforme for sendo digitados os próximos números os zeros são substituídos.