Search code examples
javainsertionjspinnerletter

Java JSpinner Prevent Letter Insertion


A JSpinner is used to store a number in my application (with a SpinnerNumberModel).

As expected, the spinner doesn't allow invalid characters (letters, symbols, etc.) to be stored. However, those characters do appear in the spinner component when I type them in. As soon as I switch the focus to another component, they disappear.

Is there a way to prevent invalid characters from appearing in the spinner?


Solution

  • You can add a DocumentFilter to the editor of the spinner to prevent unwanted character from being added to the Document. You get the editor using code like:

    JTextField editor = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();
    

    Read the section from the Swing tutorial on Implementing a Document Filter for more information.