Problema em tela de cadastro com MaskFormatter

Galera, tenho a seguinte situação:
Tenho uma tela de cadastro com campos formatados, por exemplo Data.
O código tá da seguinte forma:

try {
            mskData = new MaskFormatter("##/##/####");
            mskData.setPlaceholderCharacter('_');

            ftData = new JFormattedTextField(mskData);

        } catch (ParseException ex) {
            Logger.getLogger(PreNotaCadastro.class.getName()).log(Level.SEVERE, null, ex);
        }

        javax.swing.JTextField = new javax.swing.JFormattedTextField(mskData);

O problema é o seguinte, quando o usuário realiza um cadastro, tenho um método que limpa todos os campos da tela. Porém, se o usuário posiciona o cursor no campo que tem a máscara e pressiona TAB, o campo recupera o valor digitado anteriormente.
Tentei repetir o mesmo código de formatação acima quando estou limpando os campos, mas não dá certo, o valor digitado no campo simplesmente fica no lá estático, sem nem ao menos limpar o campo.
Alguém já teve esse problema ou sabe como resolver isso?

Desde já obrigada!

Deise, eu usei o masformatter também, e quando eu limpava o campo eu usava:



data.setText("");

o problema que eu tive é quando eu digito, e apago normalmente e vou para outro campo sem limpar o text field com akele comando que postei acima, ai os dados voltam para o textfield =/

[quote=tarlix]Deise, eu usei o masformatter também, e quando eu limpava o campo eu usava:



data.setText("");

o problema que eu tive é quando eu digito, e apago normalmente e vou para outro campo sem limpar o text field com akele comando que postei acima, ai os dados voltam para o textfield =/

[/quote]

É bem isso que acontece comigo também!

Mas tive uma ideia agora…talvez se ao invés de fazer:

data.setText("") ;

fizesse

data.setText("__/__/____");

Esse é o conteudo do campo quando não está preenchido…talvez funcione…
Só não dá pra testar agora porque to trabalhando…mas depois tento e posto aqui dizendo se deu certo ou não!

try { novoCPF = new SFormattedTextField(new MaskFormatter("###.###.###-##")); } catch (ParseException e1) { e1.printStackTrace(); } ()

assim como você esta fazendo as vezes acontece de utilizar a mesma mascara para mais de um campo dae ocorre este problema, o

novoCPF.setText(""); funciona perfeitamente sem limpar a mascara

Sim!

A questão é: tenho uma máscara declarada para cada campo, nunca utilizo a mesma máscara em mais do que um JTextField.

Só que quando o usuário acaba de realizar um cadastro, faço assim para limpar o campo:

textFieldData.setText(""); //Atribuo vazio ao campo sem limpar a máscara!!!

Aí quero realizar um novo cadastro.
Meu campo está bonitinho, vazio, com a máscara de Data “//____”. Aí eu coloco o cursor do mouse no campo de data e sem querer dou um TAB… aí que vem o problema, neste momento aparece no campo, mesmo depois de eu atribuir o valor “”, a data que eu tinha digitado no cadastro anterior.

Isso acontece em todos os campos que aplico MaskFormatter…
Lembrando que cada campo tem sua máscara…tem telas que tem 10 máscaras diferentes para cada campo específico…

tenta dessa forma

já que irá fazer com JFormattedTextField

na parte onde esta seus initComponents

coloque assim

try { ((JFormattedTextField) seuTxt).setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####"))); } catch (java.text.ParseException ex) { ex.printStackTrace(); }

caso dê certo coloque resolvido!!

abrxx

[quote=lokit"s]tenta dessa forma

já que irá fazer com JFormattedTextField

na parte onde esta seus initComponents

coloque assim

try { ((JFormattedTextField) seuTxt).setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####"))); } catch (java.text.ParseException ex) { ex.printStackTrace(); }

caso dê certo coloque resolvido!!

abrxx[/quote]

Beleza!
Vou testar mais tarde aí posto aqui o resultado!

Valeu!!!

Meu amigo lokit"s, tentei fazer da forma que você sugeriu porém não funcionou também!
Estou quebrando a cabeça com isso ainda!

Ola,
para limpar os campos é só usar textfield.setText("");
eu criei uma classe especifica para todas as mascaras que uso ai quando quero criar um textfield com ela eu faço o seguintetxtCPF=new Mask1().maskCPF(); e ao usar o método setText()funciona direitinho…
tu podes fazer o seguinte:
1-Criar uma classe e colocar la todas as tuas mascaras

[code]package src.mascaras;

import java.awt.Font;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;

public class Mascara extends JFormattedTextField {
    
	private static final long serialVersionUID = 1L;
		JFormattedTextField cnpj;
    	
    	public JFormattedTextField maskData(){

    		try 
    		{  
    			 mskData = new MaskFormatter("##/##/####");  
        mskData.setPlaceholderCharacter('_');  
    		}
    		catch (Exception e1){  
    			  Logger.getLogger(PreNotaCadastro.class.getName()).log(Level.SEVERE, null, ex);  
    		}
    		
    	}
    }[/code]

2-ai nesta tela que voce vai usar a mascara faça o seguinte:

ai quando usar o settext() não tera estes problemas