通过 JTextField 循环到 getText 并检查是不是为空

Posted

技术标签:

【中文标题】通过 JTextField 循环到 getText 并检查是不是为空【英文标题】:looping through JTextField to getText and check if empty通过 JTextField 循环到 getText 并检查是否为空 【发布时间】:2021-10-17 06:38:50 【问题描述】:

在创建 ArrayList ArrayList<JTextField> textfields = new ArrayList<JTextField>(); 后,我试图循环通过 JTextField 我需要检查这些 JTextFields 是否为空,但我收到 AWT-EventQueue-0 错误。

在 ArrayList 中添加所有 JTextFields

// textfields.add(AllTextFields)

遍历 ArrayList

for(int i=0; i<textfields.size(); i++)
    if(!textfields.get(i).getText().equals(""))
       callFrame();
    

解释

我在这里要做的就是检查这些 JTextField 中的 at least one 是否为空,如果一个为空,则不要调用另一帧。如果ALL JTextFields 不为空,则调用新框架。我收到 AWT-EventQueue-0 - NullPointerException。事实上,我没有访问没有指向某物的变量。

【问题讨论】:

查看:***.com/questions/30919644/… 以获得稍微不同的方法。表单上的“提交”按钮默认是禁用的,只有在每个文本字段中输入文本时才会启用。 【参考方案1】:

如果我对您的理解正确,那么您的代码将不起作用,因为如果其中一个文本字段不为空(如果所有文本字段都不为空),您将调用另一个框架。我会这样做:

    boolean allFilled = true;
    for (JTextField textfield : textfields) 
        String text = textfield.getText();
        if (text == null || text.isEmpty()) 
            allFilled = false;
            break;
        
    

    if (allFilled) 
        // Call the other Frame if every Textfield has a value
        callFrame();
    

在这里您不必循环遍历所有文本字段,因为您只需在找到至少一个空字段时结束循环。

您能否发布完整的 Stacktrace(错误消息)?你只分享了 AWT-EventQueue-0 但这是发生错误的线程名称。

【讨论】:

如果我用布尔值更改循环,我也会遇到同样的错误 在错误堆栈跟踪中,您应该看到发生错误的行。如果它仍然是一个空指针异常,那么您正在尝试访问一个为空的变量。也许您的文本字段之一为 null 或文本字段返回 null 作为文本(不确定,因为我从未使用过 swing)。您还可以尝试调试并查看变量以查看什么是 null。 我正在尝试添加if(textfields.get(i).isEditable == true),因此它会检查所有可编辑的文本字段,因为可能在不可编辑的文本字段上循环它的循环时,它将为空。但是我仍然尝试了很多答案,并且显示了相同的错误。我在textfields.get(i).getText().equals("") 是的,那么它可能是以下为空的事物之一: - 列表(文本字段) - 从 get(i) 返回的文本字段 - 从 getText() 返回的文本 我正在尝试使用System.out.println(textfields.get(0).getText(); 打印 ArrayList 的第一个元素,但它什么也没显示。也许 ArrayList 是空的,我会仔细检查一下。

以上是关于通过 JTextField 循环到 getText 并检查是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Netbeans 将 Image 添加到 Mysql

java:判断在JTextField中输入的是不是是7位数字

用java做前台 向数据库插入数据是 怎么判断有木有插入进数据库 ?

创建后如何在 JTextField 中设置新文本?

Swing JTextField 文本更改侦听器 DocumentListener 无限循环

尝试仅允许将数字输入JTextField,将非数字设置为0