Colega, vamos fazer uma coisa bem prática e que vc usará para toda sua vida?
Vamos lá.
Faça uma classe nova com um nome por exemplo Mascara.class
nelas vc coloca todas as máscaras que vc precisa, tipo cpf, tel, ip, cnpj etc…
coloque todas as máscaras em métodos como esse qeu te passarei abaixo:
public MaskFormatter maskData(JFormattedTextField textfield) throws ParseException{
MaskFormatter mask = null;
mask = new MaskFormatter("##/##/####");
mask.setOverwriteMode(true);
mask.setValidCharacters("0123456789");
mask.setPlaceholderCharacter('_');
mask.install(textfield);
return mask;
}
a partir daí, vc instância essa classe no formulário que vc quer usar, e chama o método em no seu jFormatTxtField, dentro de seu construtor, observe que houve um throws no método anterior, portanto seu jFormatTxtField deve ter o try{ , exemplo:
try {
mask.maskData(jFormattedTextFieldData);
} catch (ParseException ex) {
JOptionPane.showMessageDialog(jDesktopPaneCadastroFunc,"Data inválida.","Erro",JOptionPane.ERROR_MESSAGE);
}
para melhor entendimento, estarei postando abaixo um form bem simplificado, copie ele e cole em um classe com o mesmo nome e rode para ver como é simples.
Obs: Também ralei pra burro na época pra entender como funciona.
Não se grile com os códigos que não interessam, são apenas para montar o form, atente para o método
maskData() e o jFormattedTextFieldData
vc pode fazer esse métodos em outra classe para reutilizá-la em outros aplicativos, daí apenas instâncie e chame o método desejado (maskData, maskTel, maskCpf etc…)
monte uma classe chamada TesteData.class e cole o código abaixo
Bem explicado e bem simples, acho que agora vai ficar muito fácil
/*
* TesteData.java
*
* Created on 29 de Dezembro de 2007, 13:26
*/
package lookandfeelexemplo;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;
/**
*
* @author Marcelo
*/
public class TesteData extends javax.swing.JFrame {
/** Creates new form TesteData */
public TesteData() {
initComponents();
// o try vc deverá colocar em todos os jFormatTxtField que usar esse método
//deixe sempre após o initComponents(), para evitar que sua máscara seje sobscrita
try {
maskData(jFormattedTextFieldData);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
public MaskFormatter maskData(JFormattedTextField textfield) throws ParseException{
MaskFormatter mask = null;
// nessa linha abaixo vc define o formato, então ###.###.###-## seria para cpf
mask = new MaskFormatter("##/##/####");
//permite sobrescrever os caracteres padrão de separação das barras ( _ )
mask.setOverwriteMode(true);
//os caracteres permitidos para digitação
mask.setValidCharacters("0123456789");
//tipo de caracter que ficará nos espaços para serem preenchidos
mask.setPlaceholderCharacter('_');
//instala a mascara no maskFormat e retorna no return abaixo
mask.install(textfield);
return mask;
}
/**
*Não se preocupe com o código abaixo, é apenas o form
*/
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Código Gerado ">
private void initComponents() {
jFormattedTextFieldData = new javax.swing.JFormattedTextField();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Formato de Data:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(162, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jFormattedTextFieldData, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(124, 124, 124))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(93, 93, 93)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jFormattedTextFieldData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(167, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TesteData().setVisible(true);
}
});
}
// Declaração de variáveis - não modifique
private javax.swing.JFormattedTextField jFormattedTextFieldData;
private javax.swing.JLabel jLabel1;
// Fim da declaração de variáveis
}