Capturar precio ($1,000.00) en jtextfield
Que tal amigos de javamexico.org, soy nuevo en la programación de java me podrían ayudar? mi problema es el siguiente... tengo un formulario con un jtextfield, quiero capturar un precio ($ 1,000.00), e intentado formatearlo con JFormattedTextField ......MaskFormatter("$ ##,###.##") y efectivamente lo hace pero el problemas es que si quiero capturar solo 1.00 tengo que pasar por todos los caracteres para llegar al punto decimal, quisiera que al poner el entero, luego el punto decimal y poder capturar los decimales. Existirá alguna forma práctica de hacer esto? he buscando en internet pero no encuentro alguna solución.
Gracias de antemano a todos por sus comentarios.....
- Rcc's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Solución un poco complicada
he trabajado en esto un poco este codigo trabaja..... pero si existe alguna opción mas amigable favor de comentarla.....
public void keyTyped(KeyEvent e)
{
char caracter = e.getKeyChar();
// Verificar si la tecla pulsada no es un digito
if(((caracter < '0') ||
(caracter > '9')) &&
(caracter != '.') &&
(caracter != '\b' /*corresponde a BACK_SPACE*/))
{
e.consume(); // ignorar el evento de teclado
}
}
});
pventa.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(java.awt.event.FocusEvent evt) {
pventaFocusGained(evt);
}
private void pventaFocusGained(FocusEvent evt) {
pventa.setEditable(true);
}
});
pventa.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent evt) {
pventaKeyPressed(evt);
}
private void pventaKeyPressed(java.awt.event.KeyEvent evt) {
if (pventa.getText().length() == 8) {
pventa.setEditable(false);
}
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
Locale locale ;
locale = new Locale("es","MX");
String pventa2;
pventa2 = pventa.getText();
double pventa3;
pventa3 = Double.parseDouble(pventa2);
NumberFormat currencyFormatter;
currencyFormatter = NumberFormat.getCurrencyInstance(locale);
String currencyOut;
currencyOut = currencyFormatter.format(pventa3);
pventa.setText(currencyOut);
pventa.transferFocus();
}
if (evt.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
if (pventa.getText().length() == 8) {
pventa.setEditable(true);
}
}
}
});