olá…RPATRICIA…
o negócio é o seguinte…
1º passo: voce irá criar duas classes: 1º - LimitedIntegerJTextField e a 2º - LimitedTextField
2º passo: adiciona os imports, ou o que mais precisar… é beem facim…
3º passo: depois de ter as duas classes (vale lembrar: NO MESMO PACOTE), voce cria um objeto da classe LimitedIntegerJTextField.
assim: LimitedIntegerJTextField po = new LimitedIntegerJTextField(11); na sua classe principal. onde está localizada a JTextField do CPF e/ou CNPJ.
vale lembrar: o numero 11 é o tanto de numeros maximos do seu campo CPF, que por sinal tambem so ira aceitar NUMEROS e não LETRAS. e voce pode
fazer isso tambem para limitar um campo de senha ou rg. qualquer um.
4º passo: feito isso, voce atribui o objeto do seu JTextField com o objeto da sua classe LimitedIntegerJTextField.
assim:
JTextField campoCpf = new JTexField();
campoCpf.setBounds(50,55,40,60); //localização do campoCpf
LimitedIntegerJTextField limit = new LimitedIntegerJTextField(11);
campoCpf = limit;
PROOONTINHO!!! abaixo segue as duas classes, de mão beijada… que eu demorei anos pra encontrar e fazer as modificações!!!
Espero ter ajudado…
1º CLASSE
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class LimitedIntegerJTextField extends LimitedTextField{
public LimitedIntegerJTextField(int maxLength) {
super(maxLength);
this.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if(!Character.isDigit(c) && KeyEvent.VK_BACK_SPACE != c){
e.consume();
}
}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
});
}
private String oldValue;
public void paste(){
this.oldValue = getText();
super.paste();
if(!isNumeros(getText())) {
setText(this.oldValue);
}
}
/**
* Obtem uma string que representa os números digitados no campo, e verifica se na string
* possui apenas números.
* @param valor
* @return
*/
private boolean isNumeros(String valor) {
final String NUMEROS = "[telefone removido]";
for (int i = 0; i < valor.length(); i++) {
char caracter = valor.charAt(i);
if(NUMEROS.indexOf(caracter) == -1) {
return false;
}
}
return true;
}
}
2º CLASSE
import javax.swing.JTextField;
import java.awt.event.*;
public class LimitedTextField extends JTextField{
private byte maxLength=0;
public LimitedTextField(int maxLength){
super();
this.maxLength= (byte)maxLength;
this.addKeyListener(new LimitedKeyListener());
}
public void setMaxLength(int maxLength){
this.maxLength= (byte)maxLength;
update();
}
private void update(){
if (getText().length()>maxLength){
setText(getText().substring(0,maxLength));
setCaretPosition(maxLength);
}
}
public void setText(String arg0){
super.setText(arg0);
update();
}
public void paste(){
super.paste();
update();
}
//Classes Internas
private class LimitedKeyListener extends KeyAdapter{
private boolean backspace= false;
public void keyPressed(KeyEvent e){
backspace=(e.getKeyCode()==8);
}
public void keyTyped(KeyEvent e){
if ( !backspace &&
getText().length()>maxLength-1){
e.consume();
}
}
}
}