Estou tentando formatar um campo para que seja digitado o número de telefone. No entanto esta apresentando alguns inconvenientes conforme a seguir:
- Se o conteúdo do campo não for preenchido completamente, ao posicionar o cursor em um outro campo, o conteúdo digitado é eliminado.
- Uma vez preenchido o campo, caso necessite eliminar o conteúdo, ao tirar o foco do campo o conteúdo anterior volta a ser apresentado.
Abaixo segue um exemplo do código que estou utilizando. Por favor, alguém poderia me auxiliar para solucionar estes problemas.
import java.awt.<em>;
import java.awt.event.</em>;
import javax.swing.<em>;
import javax.swing.text.</em>;
public class Teste extends JFrame {
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
public Teste() {
super("Formatação Texto");
JPanel JPContainer = new JPanel();
JLabel lblCEP = new JLabel("Telefone");
lblCEP.setBounds(10,10,60,10);
JPContainer.add(lblCEP);
JFormattedTextField zipField = new JFormattedTextField(createFormatter("(##)####-####"));
zipField.setBounds(90,10,100,20);
JPContainer.add(zipField);
JLabel lblCity = new JLabel("Endereço");
lblCity.setBounds(10,30,60,10);
JPContainer.add(lblCity);
JTextField JTexto = new JTextField("");
JTexto.setBounds(90,30,100,20);
JPContainer.add(JTexto);
JPContainer.setLayout(null);
//cp.add(JTexto);
JPContainer.setBounds(50,50,200,200);
getContentPane().add(JPContainer);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,100);
setLocation(((screen.width - 500)/2),((screen.height-450)/2)+44);
}
protected MaskFormatter createFormatter(String s) {
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter(s);
} catch (java.text.ParseException exc) {
System.err.println("formatter is bad: " + exc.getMessage());
System.exit(-1);
}
return formatter;
}
public static void main(String args[]) {
new Teste().show();
}
}