JTextField 整数验证

JTextField Validation with integers

我正在尝试验证 JTextField 中的整数值。我想确保用户只输入设定范围内的整数值。我尝试使用 JFormattedTextField 但到目前为止运气不好。

一个好的选择是使用 InputVerifier - 除非满足输入条件,否则您的文本字段不会产生焦点。 JFormattedTextField 不会在这里做,因为你的限制不仅仅是格式,还有数学。

public class NumRange extends JFrame {

    public static void main(String[] args) {

        new NumRange();
    }

    NumRange() {

        final int MIN = 0;
        final int MAX = 100;

        JTextField textField = new JTextField();
        textField.setInputVerifier(new InputVerifier() {

            @Override
            public boolean verify(JComponent input) {
                String text = ((JTextField) input).getText();
                int num;
                try {
                    num = Integer.parseInt(text);
                } catch (NumberFormatException e) {
                    return false;
                }
                if (num <= MAX && num >= MIN)
                    return true;
                return false;
            }
        });

        getContentPane().add(textField);
        getContentPane().add(new JTextField(), BorderLayout.PAGE_END);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }
}

在顶部输入各种输入后尝试将焦点切换到底部文本字段。