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.....

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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);
}

}

}

});