Pedrosa
Eu implementei algo assim:
txtCartao.setName("txtCartao");
txtCartao.addKeyListener(
new KeyListener(){
public void keyTyped(KeyEvent e) {
txtCartao.setText(maxLength(txtCartao.getText(),17));
}
public void keyPressed(KeyEvent e) {
txtCartao.setText(maxLength(txtCartao.getText(),17));
}
public void keyReleased(KeyEvent e) {
txtCartao.setText(maxLength(txtCartao.getText(),17));
}
}
);
public static String maxLength(String entrada,int tamanho){
StringBuffer saida = new StringBuffer();
char[] caracteres = removeCaracters(entrada).toCharArray();
for(int i=0;i<caracteres.length && i<=tamanho;i++){
saida.append(caracteres[i]);
}
return saida.toString();
}
public static String removeCaracters(String entrada){
Pattern numericos = Pattern.compile("[0-9]",Pattern.CASE_INSENSITIVE);
Matcher encaixe = numericos.matcher(entrada);
StringBuffer saida = new StringBuffer();
while(encaixe.find())
saida.append(encaixe.group());
return saida.toString();
}