java - 验证 GUI 中的文本字段输入

标签 java validation user-interface

我有两个文本字段,单击“提交”时它们的总和必须达到 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());

最佳答案

Integer.parseInt(str); 如果解析到方法中的 String 无法解析,则抛出 NumberFormatException (您看到的错误)转换为数字。

在这种特殊情况下,您可以使用一些异常处理。我建议使用 trycatch block 。例如;

   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 block 内抛出异常,它将被“捕获”,然后在 catch< 中将验证设置为 false/ block 。您还可以使用 catch block 显示一条消息,指出只能在字段中输入数字。

使用 Swing API 实现此目的的另一种方法是,如果您不希望他们永远将文本放入这些字段中,您可以使用 JFormattedTextField允许他们只输入数字。

我希望这有帮助。让我知道你的进展如何。

关于java - 验证 GUI 中的文本字段输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393452/

相关文章:

java - 无法从文件退出循环 Java 输入

javascript - 如何让 Angular 显示正确的验证消息

windows - 获取按钮的类名

java - 在Java游戏中实现拖放

java初始化流输入/输出变量

java - 获取 Android 的 IP 以进行 P2P 连接

c - C 语言中用于日期验证的库?

asp.net-mvc - 地址字段的自定义 ASP.NET MVC 验证摘要

python - 修改默认 Ttk Clam 小部件颜色

java - 有没有更简单的方法来获取 Java 数组的最后一个元素?