/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

/**
 *
 * @author us
 */
public class NumericTextField extends JTextField {

    private NumericTextField currectObject = null;

    public NumericTextField() {
        currectObject = this;
        this.addCaretListener(new CaretUpdateListenerClass());
    }

    private class CaretUpdateListenerClass implements CaretListener {

        public void caretUpdate(CaretEvent e) {
            checkLastCharacter();
        }

        private void checkLastCharacter() {

            new Thread() {

                @Override
                public void run() {

                    // Additional
                    int caretPosition = currectObject.getCaretPosition();

                    String text = currectObject.getText();
                    if (text.length() != 0 && caretPosition != 0) {
                        /* char c = text.charAt(text.length() - 1); */
                        // Write instead:
                        char c = text.charAt(caretPosition - 1);

                        if (!Character.isDigit(c)) {
                            StringBuffer sb = new StringBuffer(text);
                            /* sb.deleteCharAt(sb.length() - 1); */
                            sb.deleteCharAt(caretPosition - 1);
                            currectObject.setText(sb.toString());
                            /* phoneNumberTextField.setCaretPosition(sb.length()); */
                            // Write instead:
                            currectObject.setCaretPosition(caretPosition - 1);
                            // Additional
                            currectObject.repaint();

                        //text = text.substring(0, text.length() - 1);
                        //phoneNumberTextField.setText(text);
                        //phoneNumberTextField.setCaretPosition(text.length());
                        }
                    }

                }
            }.start();
        }
    }
}
