estou criando uma Classe que amplia a JFormattedTextField.
Não sei o que fiz de errado
quando tento criar o objeto desta forma:
jTxtJurosMes = new TxtFieldFormatado(TxtFieldFormatado.setMascara(1));
o txtField não aceita nenhum tipo de caracter.
aqui está o codigo da classe:
import javax.swing.JFormattedTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.MaskFormatter;
import javax.swing.text.PlainDocument;
public class TxtFieldFormatado extends JFormattedTextField{
private static final long serialVersionUID = 1L;
public TxtFieldFormatado(MaskFormatter maskara){
super(maskara);
}
protected Document createDefaultModel() {
return new UpperCaseDocument();
}
//Metodo que transforma todos os caracteres para Uppercase
static class UpperCaseDocument extends PlainDocument {
private static final long serialVersionUID = 1L;
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
// Cria máscara para o FormattedTextField
public static MaskFormatter setMascara(int tipoMascara){
MaskFormatter mask = null;
try{
switch (tipoMascara){
case 1 : {
mask = new MaskFormatter();
mask.setValidCharacters("0123456789,");
break;
}
case 2 : {
mask = new MaskFormatter("##/##/####");
break;
}
case 3 : {
mask = new MaskFormatter("###.###.###-##");
break;
}
}
}catch(java.text.ParseException ex){}
return mask;
}
}
será que alguem pode me dizer onde estou errando?