getValue en JFormattedTextField

58 views
Skip to first unread message

martins

unread,
Apr 10, 2008, 7:46:26 AM4/10/08
to JavaSOS
Hola gente, tengo un problema con el valor que devuelve el
JFormattedTextField con getValue().
el tema es asi:

public static DefaultFormatterFactory getFormato(){

// Formato de visualización
NumberFormat vistaNumberFormat = NumberFormat.getCurrencyInstance();
vistaNumberFormat.setMaximumFractionDigits(4);

// Formato de edición: inglés (separador decimal: el punto)
NumberFormat editNumberFormat
=NumberFormat.getNumberInstance(Locale.ENGLISH);
editNumberFormat.setMaximumFractionDigits(4);

NumberFormatter vistaFormat = new NumberFormatter(vistaNumberFormat);
NumberFormatter editFormat = new NumberFormatter(editNumberFormat);


editFormat.setCommitsOnValidEdit(true);
editFormat.setOverwriteMode(true);
return new
DefaultFormatterFactory(editFormat,vistaFormat,editFormat,editFormat);
}

ftfSueldo.setFormatterFactory(formateoPlata.getFormato());

Con este codigo yo le doy el formato de visualizacion y el de edicion,
el de edicion lo prefiero en ENGLISH porque asi puedo entrar el valor
con el punto y no con la coma que es mas incomodo.

al tomar los valores cargados en el formulario, hago esto

Double d=(Double)ftfSueldo.getValue()

Aca esta el problema, porque a veces aca me tira una exception,
diciendo que no puede castear un long en double. y a veces no.
como seria una forma facil y rapida de usar el JFormattedTextField.
Ideal seria que el getValue() devuelva un objeto de la clase que yo
elija.

muchas gracias
slds

Bruno Bonanno

unread,
Apr 11, 2008, 12:38:09 AM4/11/08
to jav...@googlegroups.com
lo q te conviene hacer es castear a number, y despues hacerle un toDouble(), obiemnte asegurate con un instanceof antes de castear
saludos
--
ATTE
Bruno Bonanno
15-3195-0013
-
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.

Rafael V

unread,
Apr 11, 2008, 3:02:49 PM4/11/08
to JavaSOS
/*
Checate este codigo, espero que te sirva para lo que necesitas.
Saludos
*/
import java.text.NumberFormat;
import java.util.Locale;
public class PruebaFormato{
public static void main(String []args){
double [] myNumber = new double[]{1.94065645841246544,
2.94065645841246544, 3.94065645841246544};
long [] myNumber2 = new long []{1223372036854775801L ,
2223372036854775802L , 9223372036854775807L };
//imprimeFormato(myNumber, myNumber2, Locale.ENGLISH); //Prueba sin
el FOR
for (int i = 0; i < Locale.getAvailableLocales().length; ++i)
imprimeFormato(myNumber, myNumber2, Locale.getAvailableLocales()
[i]);
}
public static void imprimeFormato(double []myNumber, long
[]myNumber2, Locale loc){
System.out.println("\n\nLocale = "+loc.toString());
NumberFormat nf2 = NumberFormat.getInstance(loc);
for (int i = 0; i < myNumber.length; ++i){
System.out.println("double: "+nf2.format( myNumber[i]));
System.out.println("long: "+nf2.format(myNumber2[i]));
}
}
}

javi barbieri

unread,
Apr 11, 2008, 3:37:00 PM4/11/08
to jav...@googlegroups.com
Eso no esta devolviendo un Object? proba usando BigDecimal

martins <martind...@gmail.com> escribió:


Los referentes más importantes en compra/venta de autos se juntaron:
Demotores y Yahoo!. Ahora comprar o vender tu auto es más fácil.
Visitá http://ar.autos.yahoo.com/

martins

unread,
Apr 13, 2008, 7:26:11 PM4/13/08
to JavaSOS
Lo que hice fue lo que sugirio Bruno Bonanno,

Number sueldoNumber=(Number)ftfSueldo.getValue();

y el dato lo obtengo asi

Double d=sueldoNumber.doubleValue()

Yo el dato lo quiero guardar en la base de datos como double por lo
tanto, aunque el usuario ingreso un numero que se podria considerar
como Integer, yo lo quiere como doble.
El isInstance no haria falta supongo, ya que asi como lo hago el
numero que se cargue siempre sera un double.

Gracias

Martin

Bruno Bonanno

unread,
Apr 13, 2008, 9:05:18 PM4/13/08
to jav...@googlegroups.com
el instanceof es por si acaso metieron letras o algo, o por si es null, es para evirar problemas locos, salvo q hayas hecho algun document o algo q restrinja la entrada de letras

saludos

martins

unread,
Apr 16, 2008, 9:35:22 AM4/16/08
to JavaSOS
Con el mismo JFormattedTextField restrinjo la entrada de datos
erroneos...
Asi esta funcionando perfecto, gracias por la ayuda.
slds
Reply all
Reply to author
Forward
0 new messages