Search code examples
javauser-interfaceswingjtextfieldjformattedtextfield

What is a simple way to create a text field (or such) that only allows the user to enter ints/doubles in Java?


I am looking for a way to ensure that my text field (JTextField, JFormattedTextField) is returning a double or int rather than a string when I call .getText(). What is the best way to do this (if possible)?

Thanks!

badPanda :D


Solution

    1. Register InputVerifier and call method getValue from JFormattedTextField

      public class FormattedTextFieldVerifier extends InputVerifier {
          public boolean verify(JComponent input) {
           if (input instanceof JFormattedTextField) {
               JFormattedTextField ftf = (JFormattedTextField)input;
               AbstractFormatter formatter = ftf.getFormatter();
               if (formatter != null) {
                   String text = ftf.getText();
                   try {
                        formatter.stringToValue(text);
                        return true;
                    } catch (ParseException pe) {
                        return false;
                    }
                }
            }
            return true;
        }
        public boolean shouldYieldFocus(JComponent input) {
            return verify(input);
        }
      

      }