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

problema con JTextField

Estas en el tema de problema con JTextField en el foro de Java en Foros del Web. Hola, estoy creando una clase basandome en JTextField para validar que solo se capturen numeros ya sea enteros o decimales, estoy teniendo problemas con las ...
  #1 (permalink)  
Antiguo 05/04/2010, 21:17
 
Fecha de Ingreso: junio-2004
Mensajes: 3
Antigüedad: 19 años, 9 meses
Puntos: 0
problema con JTextField

Hola, estoy creando una clase basandome en JTextField para validar que solo se capturen numeros ya sea enteros o decimales, estoy teniendo problemas con las variables static que declaro al inicio de la clase, esta clase ya funciona pero cuando la instancio en mis aplicaciones si declaro mas de una instancia esta respetando los valores que envio a la ultima instancia, la forma de instanciarla es enviando el numero de digitos y de decimales que podra capturar el JTextField, declaro esto:
====================
validacion.JNumField tt1 =new validacion.JNumField(2,3);
validacion.JNumField tt2 =new validacion.JNumField(5,0);
validacion.JNumField tt3 =new validacion.JNumField(3,2);
validacion.JNumField tt4 =new validacion.JNumField(4,4);
====================
el problema es que me respeta el ultimo que instancie, es decir en este ejemplo los 4 campos aceptan 4 enteros y cuatro decimales como dice la instancia "tt4"
el codigo con el que estoy iniciando la clase es este:
==============================
public class JNumField extends javax.swing.JTextField implements KeyListener, MouseListener, FocusListener {
static boolean entero;
static boolean decimal;
static int digitos;
static int decimales;

public JNumField (int numDigitos, int numDecimales) {
// numDigitos: numero de digitos antes del punto decimal
// numDecimales: numero de digitos despues del punto decimal
// si numDecimales es cero, se JNumField numero entero sin decimales
// si numDigitos es cero se asigna 9 como numero de digitos a capturar
decimales=numDecimales;
digitos=numDigitos;
setPrecision(numDigitos, numDecimales); // clase creada por mi
this.setText("0");
this.setHorizontalAlignment(TRAILING);
this.setFocusable(true);
addKeyListener ( this );
addMouseListener ( this );
addFocusListener (this);
}
==============================
he hecho ya varias pruebas y el problema continua incluso si en mi aplicacion asigno el valor directamente con tt4.decimales=5 (por medio de cada instancia) el problema persiste, no se si tiene que ver con la declaracion de las variables de clase. que puedo estar haciendo mal amigos?
saludos!
  #2 (permalink)  
Antiguo 05/04/2010, 22:45
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: problema con JTextField

Oye, no soy experto en java, pero tengo entendido que la palabra clave static es para que la propiedad de la clase sea usada sin necesidad de instanciar la clase...

Es decir, creo que la palabra "new" no es necesaria.

Alguien que me oriente si me equivoco..

Saludos.
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #3 (permalink)  
Antiguo 07/04/2010, 04:33
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: problema con JTextField

Cita:
Iniciado por tonyboytx Ver Mensaje
...estoy teniendo problemas con las variables static que declaro al inicio de la clase, esta clase ya funciona pero cuando la instancio en mis aplicaciones si declaro mas de una instancia esta respetando los valores que envio a la ultima instancia...
El problema está en el uso de static para declarar las variables de tu JNumField. Una variable static tiene el mismo valor PARA TODAS LAS INSTANCIAS DE ESA CLASE. En tu caso, al asignar el valor a estas variables en el constructor, todas las instancias pasan a tener el valor de la última asignación (4,4).

Elimina el modificador static y se funcionará sin problemas ;)

Etiquetas: jtextfield
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 01:30.