Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing中的输入验证_Java_Swing - Fatal编程技术网

Java Swing中的输入验证

Java Swing中的输入验证,java,swing,Java,Swing,我用6个jTextFields在swing中创建了表单。用户应该只能在每个文本字段中输入1到48之间的数字。还应该检查是否有任何数字重复,应用程序应该检查是否有任何字段留空 我知道如何在VB.net中实现这一点,但我对java基本上是新手 在VB.net中,我会将所有文本字段放入数组中,然后检查所有文本字段是否都已填充,数字是否在范围内,并检查任何字段中是否有重复的数字。若所有条件都满足,我将继续向数据库发送输入 我对java相当陌生,所以如果有人能帮助我或为我指出正确的方向,那将是非常棒的 通

我用6个jTextFields在swing中创建了表单。用户应该只能在每个文本字段中输入1到48之间的数字。还应该检查是否有任何数字重复,应用程序应该检查是否有任何字段留空

我知道如何在VB.net中实现这一点,但我对java基本上是新手

在VB.net中,我会将所有文本字段放入数组中,然后检查所有文本字段是否都已填充,数字是否在范围内,并检查任何字段中是否有重复的数字。若所有条件都满足,我将继续向数据库发送输入

我对java相当陌生,所以如果有人能帮助我或为我指出正确的方向,那将是非常棒的

  • 通过从textfield检索文本
  • 解析通过,如果抛出异常,则输入无效
  • 验证数字是否在范围内
  • 将它们全部添加到a中,并检查其大小是否为6。如果没有,那么就有重复的
  • 下面是验证的示例:

    JTextField[] fields;
    
    void vaildate() {//call when appropriate(ie ActionListener of JButton)
        int[] nums = new int[fields.length];
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < fields.length; i++) {
            try {
                nums[i] = Integer.parseInt(fields[i].getText());
            } catch (NumberFormatException ex) {
                //not a valid number tell user of error
                return;
            }
            if (nums[i] < 1 || nums[i] > 48) {
                //out of number range tell user of error
                return;
            }
            if (!set.add(nums[i])) {
                //duplicate element tell user of error
                return;
            }
        }
        //do what you want with the data now
    }
    
    JTextField[]字段;
    void vaildate(){//适当时调用(即JButton的ActionListener)
    int[]nums=新的int[fields.length];
    Set=newhashset();
    for(int i=0;i48){
    //超出数字范围告知用户错误
    返回;
    }
    如果(!set.add(nums[i])){
    //重复元素告诉用户错误
    返回;
    }
    }
    //现在对数据执行所需操作
    }
    
  • 通过从textfield检索文本
  • 解析通过,如果抛出异常,则输入无效
  • 验证数字是否在范围内
  • 将它们全部添加到a中,并检查其大小是否为6。如果没有,那么就有重复的
  • 下面是验证的示例:

    JTextField[] fields;
    
    void vaildate() {//call when appropriate(ie ActionListener of JButton)
        int[] nums = new int[fields.length];
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < fields.length; i++) {
            try {
                nums[i] = Integer.parseInt(fields[i].getText());
            } catch (NumberFormatException ex) {
                //not a valid number tell user of error
                return;
            }
            if (nums[i] < 1 || nums[i] > 48) {
                //out of number range tell user of error
                return;
            }
            if (!set.add(nums[i])) {
                //duplicate element tell user of error
                return;
            }
        }
        //do what you want with the data now
    }
    
    JTextField[]字段;
    void vaildate(){//适当时调用(即JButton的ActionListener)
    int[]nums=新的int[fields.length];
    Set=newhashset();
    for(int i=0;i48){
    //超出数字范围告知用户错误
    返回;
    }
    如果(!set.add(nums[i])){
    //重复元素告诉用户错误
    返回;
    }
    }
    //现在对数据执行所需操作
    }
    
    JTextField=newjtextfield();
    做{
    int number=integer.parseinteger(field.getText());//这是将其解析为int的方式
    如果(编号<1 | |编号>48){
    System.Out.Println(“错误,重试”);
    }
    }而(数值>0 | |数值<49)
    
    JTextField=newjtextfield();
    做{
    int number=integer.parseinteger(field.getText());//这是将其解析为int的方式
    如果(编号<1 | |编号>48){
    System.Out.Println(“错误,重试”);
    }
    }而(数值>0 | |数值<49)
    
    根据您想要实现的方式,有很多方法可以实现这一点

    你可以。。。 使用,这将在字段被操作或焦点丢失时验证用户inpur,放弃它认为是无效的输入

    这对于大多数常见格式的后期验证很好,但确实缺乏一些灵活性

    你可以。。。 使用,这将在字段被操作或焦点丢失后验证用户输入。当您希望允许用户在值之间快速移动而无需实际键入内容时,这是很好的(单击“向上”或“向下”更容易选择字段、向右移动、删除最后一个字符并将值增加1…例如:P)

    你可以。。。 使用验证工具执行您自己的验证,并根据您的需要采取适当的步骤

    从技术上讲,您可以将其用于其他解决方案,但它可能会影响
    JFormattedField
    JSpinner
    的工作方式,所以请小心

    这使您能够定义在字段执行操作或焦点丢失时用于对其进行后期验证的实际规则。它还允许您决定当字段无效时焦点横向应如何工作,允许在字段上保持焦点,直到值有效为止(如果需要)

    您也可以在此处显示错误消息

    你可以。。。 使用一个允许您在用户输入时实时验证输入的方法,实时丢弃无效字符

    这是最复杂的解决方案之一,但也可能是最有用的解决方案之一


    看一看

    根据您想要实现它的方式,有很多方法可以实现这一点

    你可以。。。 使用,这将在字段被操作或焦点丢失时验证用户inpur,放弃它认为是无效的输入

    这对于大多数常见格式的后期验证很好,但确实缺乏一些灵活性

    你可以。。。 使用,这将在字段被操作或焦点丢失后验证用户输入。当您希望允许用户在值之间快速移动而无需实际键入内容时,这是很好的(单击“向上”或“向下”更容易选择字段、向右移动、删除最后一个字符并将值增加1…例如:P)

    你可以。。。 使用验证工具执行您自己的验证,并根据您的需要采取适当的步骤

    从技术上讲,您可以将其用于其他解决方案,但它可能会影响
    JFormattedField
    JSpinner
    的工作方式,所以请小心

    这提供