-1

I need to validate a text field in Java so as the user may only fill this field with numbers (no letters, no empty field).

KONNRI
  • 13
  • 1
  • 2

1 Answers1

0

You can use an InputVerifier for this

public class Main extends JFrame {
    private JTextField textField1 = new JTextField();
    private JTextField textField2 = new JTextField();

    public Main() {
        setSize(200,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        add(textField1, BorderLayout.NORTH);
        add(textField2, BorderLayout.SOUTH);
        textField1.setInputVerifier(fieldVerifier);
    }

    InputVerifier fieldVerifier = new InputVerifier() {
        @Override
        public boolean verify(JComponent input) {
            JTextField temp = (JTextField)input;
            try {
                int number = Integer.parseInt(temp.getText());
                return true;
            }
            catch(NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "You MUST input only numbers!");
            }
            return false;
        }
    };

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
}
Sachith Wickramaarachchi
  • 5,546
  • 6
  • 39
  • 68