Problemas serios com JFormatedTextField, um dilema!

Ae galera to desenvolvendo alguns componentes e me deparei com um dilema, quando estava criando TextFields especializados ex(JDateTetField,Numeric e etc etc …) estava tentando subclassificar JFormatedTextField pensando em fazer as coisas mais rapido mas so tive dores de cabeça realmente o JFormatedTextField não funciona como deveria, em alguns casos não funciona, precisa de ficar fazendo gambiarras e uma coisa de ficar de cabelo em pé :shock: para citar um exemplo, se voce registra um focusListner e por um acaso vc possuir uma mascara no campo ele simplismente ignora o evento :shock: se vc tenta criar um document e instalar no JFormatedTextField de uma hora p/ outra ele da um pau de NullPointerException do nada ! :? eu acho que vou desistir dele e começar do zero um componente, pq desse jeito não dá. alguem tem alguma coisa pronta nesse sentido e poderia contribuir ?

Obrigado a todos!
Estou voltando a comunidade !!!

Qdo preciso de JDateTextField eu uso como exemplo uma formatação de data como essa:
http://www.guj.com.br/forum/viewtopic.php?t=2143

Mas isso soh dah dor de cabeça…espero q dêem uma melhorada na JSE 5.0…

Pow soh tenho um exemplo tosco q peguei nem sei onde:

[code]
import java.awt.;
import java.awt.event.
;
import javax.swing.*;
import javax.swing.text.MaskFormatter;
import java.text.ParseException;
/mostra formatação para data e CPF/
public class UITestMasc extends JFrame implements ActionListener {

JFormattedTextField fieldFormatado;

MaskFormatter mascDataNasc;
MaskFormatter mascCpf;

JButton btnData = new JButton("Data");
JButton btnCpf = new JButton("CPF");

public UITestMasc() {
super(“Teste de JFormattedTextField”);
this.getContentPane().setLayout(null);
setBounds(100,100,250,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);//centraliza o JFrame na Tela
try {
mascDataNasc = new MaskFormatter("##/##/####");
mascDataNasc.setPlaceholderCharacter(’_’);
fieldFormatado = new JFormattedTextField(mascDataNasc);
fieldFormatado.setBounds(30,30,100,20);
this.getContentPane().add(fieldFormatado, null);
}
catch (ParseException e) {
e.printStackTrace();
}

  btnData.setBounds(10,60,60,20); 
  btnData.addActionListener(this); 
  this.getContentPane().add(btnData, null); 
   
  btnCpf.setBounds(100,60,60,20); 
  btnCpf.addActionListener(this); 
  this.getContentPane().add(btnCpf, null); 
   
  show(); 

}

public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnData) {
try {
this.getContentPane().remove(fieldFormatado);
mascDataNasc = new MaskFormatter("##/##/####");
mascDataNasc.setPlaceholderCharacter(’_’);
fieldFormatado = new JFormattedTextField(mascDataNasc);
fieldFormatado.setBounds(30,30,100,20);
this.getContentPane().add(fieldFormatado, null);
show();
}
catch (ParseException pe) {
pe.printStackTrace();
}
}

  if(e.getSource() == btnCpf) { 
     try { 
        this.getContentPane().remove(fieldFormatado); 
        mascCpf = new MaskFormatter("###.###.###.-##"); 
        mascCpf.setPlaceholderCharacter('_'); 
        fieldFormatado = new JFormattedTextField(mascCpf); 
        fieldFormatado.setBounds(30,30,100,20); 
        this.getContentPane().add(fieldFormatado, null); 
        show(); 
     } 
     catch (ParseException pe) { 
        pe.printStackTrace(); 
     } 
  } 

}

public static void main(String[] args) {
new UITestMasc();
}

}[/code]
Mas eu tenho um supercompleto em algum lugar…(o foda eh achar…isso aqui tah uma zona! :roll: )
Se eu achar algo interessante eu posto aqui… mas jah ouvi muita gente reclamar de Document,principalmente problemas com foco…

Eu tambem ja descobri um erro no JFormattedTextField, o erro e o seguinte:

Quando e criado um JFormattedTextField e um MaskFormatter utilizando como base o DecimalFormat para fazer a formatacao de numeros, com casa decimal e etc, e e estabelecido um limite de digitos, ou seja, 5 inteiros e 2 decimais, no momento da entrada de dados, quando e atingido o limite, por exemplo:

Mascara: #,##0.00

Entao e setado o limite de 5 inteiros e 2 decimais, e o usuario digita

1234, quando ele digita o 5 o primeiro digito e cortado, e o cursor passa para o lado das cadas decimais.

Eu ja encontrei varias reclamacoes para esse problema, mas nehumma solucao, se alguem ja viu solucao para isso, por favar ajudem

vlw, at+