Foros del Web » Programación para mayores de 30 ;) » Java »

formato de un jTextFlield a numeros

Estas en el tema de formato de un jTextFlield a numeros en el foro de Java en Foros del Web. Hola estoy haciendo una aplicación utilizando JFrames y necesito hacer que un Jtexfield solo acepte numero y que solo se pueda poner un numero con ...
  #1 (permalink)  
Antiguo 02/05/2012, 00:26
 
Fecha de Ingreso: marzo-2012
Ubicación: Mexico
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
formato de un jTextFlield a numeros

Hola estoy haciendo una aplicación utilizando JFrames y necesito hacer que un Jtexfield solo acepte numero y que solo se pueda poner un numero con un decimal osea 0.0 ejemplo 6.6, 9.9, 3.4 etc. Ya logre que solo acepte números pero no se como hacer que limite al formato 0.0

este es el código que he hecho

private void horas_clientesKeyTyped(java.awt.event.KeyEvent evt) {
int k=(int)evt.getKeyChar();
if (k >= 97 && k <= 122 || k>=65 && k<=90){
evt.setKeyChar((char)KeyEvent.VK_CLEAR);
JOptionPane.showMessageDialog(null,"No puede ingresar letras!!!","Ventana Error Datos",JOptionPane.ERROR_MESSAGE);
}
if(k==241 || k==209){
evt.setKeyChar((char)KeyEvent.VK_CLEAR);
JOptionPane.showMessageDialog(null,"No puede ingresar letras!!!","Ventana Error Datos",JOptionPane.ERROR_MESSAGE);
}
if(k==10){
horas_clientes.transferFocus();
}
}

Ya intente utilizando un jformattedtextfield pero eso solo hace el cambio al guardarlo en la variable no cuando el usuario teclea en el campo de texto
  #2 (permalink)  
Antiguo 02/05/2012, 14:08
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: formato de un jTextFlield a numeros

Utiliza mejor un objeto PlainDocument

En el metodo insertString limita la longitud del JTextField haciendo algo así:

Código:
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
   {
	   if (this.getLength()+str.length()>3) return;
	   String allStr = this.getText(0, this.getLength());
       for (int i=0;i<str.length();i++){
    	   if (str.charAt(i)==',' && allStr.indexOf(',')>-1) return;
    	   if (!(Character.isDigit(str.charAt(i)) || str.charAt(i)==',' || str.charAt(i)=='.')) return;
       }
       super.insertString(offs, str, a);
   }
y lo asignas al JTextField con el metodo setDocument

Etiquetas: int, jformattedtextfield, jtextfield, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:57.