Java 验证GUI中的文本字段输入

Java 验证GUI中的文本字段输入,java,validation,user-interface,Java,Validation,User Interface,我有两个文本字段,当单击“提交”时,它们的总数必须达到100,如果我在文本字段中输入正确的值,则不会出现错误,但如果我将文本字段留空或在其中输入字母,则错误处理不正确。有什么想法吗 submit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (validation == true) { int numA = Inte

我有两个文本字段,当单击“提交”时,它们的总数必须达到100,如果我在文本字段中输入正确的值,则不会出现错误,但如果我将文本字段留空或在其中输入字母,则错误处理不正确。有什么想法吗

submit.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

        if (validation == true) {
            int numA = Integer.parseInt(aTextField.getText());
            int numB = Integer.parseInt(aTextField.getText());
            int sum = numA + numB;

            if (sum == 100) {
                validation = true;
                System.out.println("success");
            } else {
                JOptionPane.showMessageDialog(createFrame, "A and B must add up to 100");
                validation = false;

            }


        }
这就是错误所在

int numA = Integer.parseInt(aTextField.getText());
检查一下!函数无法处理空字符串。那应该是多少

可能的解决办法:

  • 将文本字段的默认文本设置为“0”

  • 为parseInt调用添加异常处理(您可以退回到 0或提示用户进行更正)

  • Integer.parseInt(str)字符串
    无法转换为数字,则code>会抛出一个
    NumberFormatException
    (您看到的错误)

    在这种特殊情况下,您可以使用一些异常处理。我建议使用
    try
    catch
    块。比如,

       try{
           if(validation == true){
                int numA = Integer.parseInt(aTextField.getText());
                int numB = Integer.parseInt(aTextField.getText());
                int sum = numA + numB;
    
                if(sum == 100){
                    validation = true;
                    System.out.println("success");
                } else{
                    JOptionPane.showMessageDialog(createFrame, "A and B must add up to 100");
                    validation = false;
                }
            }
        } catch (NumberFormatException n){
                JOptionPane.showMessageDialog(createFrame, "Only numbers should be entered into A and B");
                validation = false;
        }
    
    如果现在从
    try
    块中抛出异常,则它将被“捕获”,然后验证将在
    catch
    块中设置为
    false
    。您还可以使用catch块显示一条消息,说明字段中只应输入数字

    使用Swing API实现这一点的另一种方法是,如果您不希望他们将文本输入到这些字段中,您可以使用a来允许他们只输入数字


    我希望这有帮助。请告诉我您的进展情况。

    在转换之前,您必须检查这些值。或者使用类似的@user3103074-没问题。很高兴我能帮忙。:)