Pessoal é o seguinte, jah vi varios topicos aki no guj, e alguns exemplos na internet, mas naum consigo fazer funcionar essa formatação!
quero que qdo a pessoa digite o sexto digito do cep antes dele apareça o " - "!
jah tentei esse tipo de exemplo no meu codigo, mas naum funcionou!
public class CamposComMascara {
JanelaCadastroDePessoas jcdp = new JanelaCadastroDePessoas();
public MaskFormatter formataCep() throws ParseException{
MaskFormatter mf = new MaskFormatter("#####-###");
return mf;
}
public void formatarCep() throws ParseException{
jcdp.setCep(this.formataCep());
}
}
metodo setCep:
public void setCep(MaskFormatter jftf){
txtCpf.setValue(jftf);
}
vlw pela força pessoal!
Dá uma olhada nesse tópico aqui.
O tópico se refere a valores monetários, mas vc pode implementar usando o CEP. Acho que é isso que vc quer.
http://www.guj.com.br/posts/list/83286.java
Espero ter ajudado
Cara, eu acho que pra fazer isso que você quer, vc deveria implementar um javax.swing.text.Document e não usar o MaskFormater.
eu ja implementei um javax.swing.text.Document pra algo parecido… pra fazer digitaçao de valores monetários… o meu Document colocava a vírgula automaticamente duas casas antes do final do número…
pesquisa por javax.swing.text.Document que vc vai encontrar uma solução.
Depois de implementar seu Document, faça algo como:
myJTextField.setDocument(myDocument);
Outra maneira seria colocar o MaskFormater como você está tentando, mas daí o “-” nao vai “aparecer” qdo o vivente digitar o sexto dígito. Na verdade, o campo irá possuir uma máscara estática:
public class MinhaJanelaDeCadastro extends JFrame{
private JFormatedTextField field1;
private JFormatedTextField field2;
// restante do código de def de atributos...
public MinhaJanelaDeCadastro() {
// inicializa todos os componentes da janela...
initComponents();
// neste momento field1 e field2 devem estar inicializados. vamos colocar a máscara
MaskFormater mask = new MaskFormatter("#####-###"); // mascara cep
mask.setPlaceHolderChar('_'); // coloca um '_' nas posições que o usuario ainda nao digitou
mask.install(field1); // instala a mascara no campo 1
mask.install(field2); // instala a mesma mascara no campo 2
// restante do codigo do construtor...
}
// restante do codigo da classe...
}
Alguem poderia me dar mais dicas sobre a classe document, pesquisei, mas naum axei 
Crie a classe:
package br.msf.docdemo.application;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
public class CepDocument extends PlainDocument implements Document {
private static final long serialVersionUID = 4561311408644570161L;
private static final int MAX_TAMANHO_CEP = 8;
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
try {
String textoAtual = getText(0, getLength()).replace("-", "");
if (textoAtual.length() == MAX_TAMANHO_CEP) {
return;
}
String ins = str.replaceAll("-", "");
Integer.parseInt(str);
if (textoAtual.length() + ins.length() > MAX_TAMANHO_CEP) {
ins = ins.substring(0, MAX_TAMANHO_CEP - textoAtual.length());
}
super.insertString(offs, ins, a);
if (getLength() > 4) {
int i = getText(0, getLength()).indexOf("-");
if (i < 0) {
super.insertString(5, "-", a);
} else if(i == 5) {
return;
} else {
super.remove(i, 1);
super.insertString(5, "-", a);
}
}
} catch (NumberFormatException ex) {
}
}
}
no seu formulário, sete o documento no seu JTextField:
JTextField cepField = new JTextField();
// init blablabla....
cepField.setDocument(new CepDocument());
compile e execute…
digite dígitos no field e qdo chegar na posicao do traço, ele será colocado automaticamente.
talvez tenha que melhorar algo… mas a idéia é essa.
[]s
Mas esse define o tamanho e coloca o traço correto, como faço para ele soh permitir numeros?
Ainda com problemas nesses txtFields!
Tentei usar a solução do sf.marcius, mas naum deu certo!
Alguem tem mais alguma sugestão!?
Gente consegui fazer isso pro CEP, alguem sabe como faço pro CPF e CNPJ, alem das datas! 