Limitar el contenido de un JTextField

osaxti
26 de Noviembre del 2003
Hola a [email protected]:
Mi cuestión es la siguiente: tengo un JTextField y quisiera que sólo se pudiera admitir en él un byte de una dir.IP, es decir un número entero menor que 255., y que no apareciese ningún otro carácter en el texto que no fuera un número. ¿Cual sería la mejor forma de hacerlo?

heihachi
26 de Noviembre del 2003
Cambiando el document del textField:

jTextField.setDocument(new DefaultStyledDocument(){
public void insertString(int offs, String str, javax.swing.text.AttributeSet a)throws javax.swing.text.BadLocationException{
if (str==null) str="";
char[] cadena=str.toCharArray();
for (int i=0;i<cadena.length;i++){
if (!Character.isDigit(cadena[i])&&cadena[i]!=' '){
java.awt.Toolkit.getDefaultToolkit().beep();
return;
}
}
if ((getLength() + str.length()) <= 3){
super.insertString(offs, str, a);
}else java.awt.Toolkit.getDefaultToolkit().beep();
}
});

Saludos!

osaxti
26 de Noviembre del 2003
Gracias, le he probado y sí funciona.

heihachi
26 de Noviembre del 2003
También pudes probar un JFormattedTextField:

jftf = new JFormattedTextField(new javax.swing.text.MaskFormatter("###"));
(en un try-catch)

Por cierto, en el ejemplo de antes admite espacios ademas de dígitos

Saludos!