esotou fazendo cadastro de cliente e preciso formatar alguns campo
como cpf,identidade,datas etc…
como faço para que quando o usuario digite apareça no formato correto??
e valide o cpf e identidade??
estou usando JTextField.
esotou fazendo cadastro de cliente e preciso formatar alguns campo
como cpf,identidade,datas etc…
como faço para que quando o usuario digite apareça no formato correto??
e valide o cpf e identidade??
estou usando JTextField.
Amigo, você pode utilizar-se do recurso de … para realizar a formatação. Conforme segue no exemplo:
try {
txtCPF = new JFormattedTextField(new MaskFormatter("###.###.###-##"));
txtCPF.setBounds(10, 10, 100, 18);
this.getContentPane().add(txtCPF);
} catch (ParseException ex) {
ex.printStackTrace();
}
Mas com relação a validação por exemplo do CPF aí você terá que criar ou encontrar um codigo que valide o digito verificador e tudo mais.
contudo há tambem uma pequena resalva vc terá que usar JFormattedTextFields ao invés de JTextFields. Além do que a string retornada pelo metodos getText() e getValue() retornam o valor formatado 
esperto ter ajudado.
valeu pela ajuda!!!
Sempre que postar códigos coloque entre as Tags [code]
^^
e vlw tmb tava procurando isso para senha
… não funcionou como eu queria
como eu faço que pra cada numero vire um *
( pra um campo de senha)
Para isso você deve usar um campo do tipo JPasswordField ao invés de JTextField;

String senha = new String(jPasswordField1.getPassword());
não recomendo a utilização do metodo getText(), embora ele retorne uma string diretamente, a documentação java diz que possivelmente em breve esse método retornará os ****** tal como aparecem ao inves de retornar a string 
espero ter ajudado.
me ajudou mt com esse jformattedtextfield
estou conseguindo oq sempre gostaria de fazer e estou finalizando o meu projeto, oq tenho agora eh uma duvida relacionada com isso
no meu projeto tem como escolher entre cpf e cnpj, entao oq gostaria de fazer eh q mudasse o formatacao, colockei ume vento q qd escolhesse cpf ou cnpj dependendo da opcao eu dou um new de novo no jformattedtextfield com o formato escolhido, so q ele nao muda, fica sempre em cpf q deixei padrao, alguem sabe pq?
andei olhando no site do java em api e olhei essa classe, e o metodo setFormatter nao posso utilizar so o setFormatterFactory =/
nao estou conseguindo, alguem pode me ajudar?
andei olhando o javadoc, o site da api de java e nao estou conseguindo fazer oq kero no post anterior, alguem pode em ajudar?
Amigo, tambem estou fazendo uns testes aqui e não to conseguindo tambem
tô achando um problema com relação a esse negocio de fazer a tela se atualizar. Parece que pra fazer isso vc não pode fazer na mesma thread do programa tem que usar um método invokerLater()… ou algo parecido, isso é o que se precisa fazer sempre que se precisa mudar algo na interface swing. mas aindo to procurando a solução… essa duvida tambem me pertence.

estou tentando aq amigo, se eu conseguir fazer o mencionado posto aq e se vc conseguir antes posta aq pra mim ^^
se eu kiser mudar um texto d um jtextfield so eh dar jtextfield.settext(“texto”);
e nao rpecisa do invokeLater, nao sei pq esse jformattedtextfield precisa =/
manim…
vou te dar uma dica, que se vc estudar tu vai fazer isso uma vez só, e vai carregar pra qqqer aplicação Desktop depois que vc for fazer…
Fazer validação de campos com focusLost() é um erro. e JFormattedTextField ao meu ver é um dos piores componentes que ja inventaram em swing.
Estude sobre InputVerifier… vc cria uma classe que extende dela, e sobrescreve o metodo verify…
ai vc adota o seguinte: se o cara digitar algo valido, vc aceita ( return true )… se ele digitar algo válido, mas sem a máscara, vc completa a máscara pra ele ( exemplo, ele digita 16062006 e vc completa as barras ficando 16/06/2006… cpf ele digta os numeros e vc põe os pontos e os traços) e aceita tb… formtaos invalidos ou datas invalidas vc retorna falso no metod verify…
Nao gasta muito tempo pra fazer isso, fica bem facil de usar depois:
seuTextField.setInputVerifyer( new seuInputVerifyer( seuTextField ) );
ai vc pode emlhorar sua classe pra aceitar diversos formatos, e vc passaria esse formato tb na hora de setar o InputVerifyer 
Cara, taí vou até dar uma olhada nesses InputVerifyer
tava mesmo sentindo falta de algo como os Validators (que saudade) do .Net
valeu pela dica meu…
nao consegui entender oq tenho q fazer qd sobrescrevo esse metodo para q ele crie uma “mascara”
poderia dar um exemplo simples? vi um exemplo na documentacao da api java mas nao consegui entender
nao conseguir faze oq keria com esse InputVerifyer
alguem pode dar uma ajuda ou como possof azer com o JFormattedTextField?
Um exemplo… validando datas
package adm.util.componentes;
import java.sql.Timestamp;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import adm.util.Util;
public class SpdInputVerifier extends InputVerifier {
private JTextField textfield;
private boolean aceitaDataPosteriorAtual;
private boolean result = true;
public SpdInputVerifier(JTextField textfield) {
this(textfield, false);
}
public SpdInputVerifier(JTextField textfield, boolean aceitaDataPosteriorAtual) {
this.textfield = textfield;
this.aceitaDataPosteriorAtual = aceitaDataPosteriorAtual;
}
@Override
public boolean verify(JComponent arg0) {
result = true;
String data = this.textfield.getText().trim();
boolean badFormat = false;
if (data != null && data.length() > 0) {
if (data.length() == 8) {
if ( !(data.substring(2, 3).equals("/") || data.substring(5, 6).equals("/")) ) {
data = data.substring(0, 2) + "/" + data.substring(2, 4) + "/" + data.substring(4);
this.textfield.setText(data);
} else {
badFormat = true;
}
} else if (data.length() == 10) {
if (!(data.substring(2, 3).equals("/") && data.substring(5, 6).equals("/"))) {
badFormat = true;
}
} else {
badFormat = true;
}
}
if ( badFormat ) {
JOptionPane.showMessageDialog(null,
"Digite a data no formato DD/MM/AAAA", "Erro",
JOptionPane.ERROR_MESSAGE);
result = false;
} else if ( data.length() > 0 ) {
if (!Util.isDateValid(data)) {
JOptionPane.showMessageDialog(null, "Data inválida.", "Erro",
JOptionPane.ERROR_MESSAGE);
result = false;
} else if (!aceitaDataPosteriorAtual) {
try {
Timestamp dataDigitada = Util.formataStringToDate(data);
Timestamp dataAtual = Util.dataAtual();
if (dataDigitada.after(dataAtual)) {
JOptionPane.showMessageDialog(null,
"Data não pode ser superior à data atual.", "Erro",
JOptionPane.ERROR_MESSAGE);
result = false;
}
} catch (Exception exc) {
exc.printStackTrace();
}
}
}
return result;
}
}
no seu JTextField vc faria:
seuTextField.setInputVerifier( new SpdInputVerifier( seuTextField ) );
axei um pouco complicado demais para uma cosia tao siimples q eu kero fazer
posso fazer com o JFormattedTextField, noa kero verificar se o cpf eh valido ou nao, somente akeles pontos e tracos e barras como eh o caso do CNPJ
qo kero eh alternar entre os dois no mesmo textfield
tem como?
aew galera utilizei o código para formatação de campos como mostrou o herbertpimentel e funcionou perfeitamente!!!
porém gostaria de saber como faço para que quando o usuario digite um texto em caixa baixa ele se torne caixa alta automaticamente?
alguem pode me ajudar?
valeuuuuuuuuu
se vc estiver utilizando JFormattedTextField utilize a letra U
veja aq:
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/MaskFormatter.html
ainda estou com a duvida de como mudar a maskformatter do jtextfield, alguem sabe?
[quote=Hammer]axei um pouco complicado demais para uma cosia tao siimples q eu kero fazer
posso fazer com o JFormattedTextField, noa kero verificar se o cpf eh valido ou nao, somente akeles pontos e tracos e barras como eh o caso do CNPJ
qo kero eh alternar entre os dois no mesmo textfield
tem como?[/quote]
a questão é que é um componente, que vai ser super bem reaproveitado depois, e vc nao vai te q ficar instanciando JFormattedTextField…
vai simplesmente pegar teu JTextField e fazer
textField.setInputVerifier( new SpdInputVerifier( textField, “cpf”) );
é como te falei… da um trabalhim inicial, mas depois tu nunca mais se preocupa com isso :lol: