【问题标题】: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。事实上,我没有访问没有指向某物的变量。

【问题讨论】:

标签: java swing arraylist jtextfield


【解决方案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 是空的,我会仔细检查一下。
猜你喜欢
  • 2017-07-17
  • 2013-06-12
  • 2016-07-16
  • 2015-06-21
  • 2018-06-27
  • 2022-06-17
  • 2021-11-17
  • 2017-04-17
相关资源
最近更新 更多