首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextFields内部VBox

TextFields内部VBox
EN

Stack Overflow用户
提问于 2018-06-11 23:43:38
回答 1查看 978关注 0票数 0

我有一个记录列表和两种类型的TextField:填充和空。我把这些放在VBox里。

代码语言:javascript
复制
for (int i = 0; i < records.size(); i++) {
    if (records.get(i).contains("NEW")) {
        TextField fillField = new TextField();
        vbox.getChildren().add(fillField);
    } else {
        TextField filledField = new TextField();
        filledField.setEditable(false);
        filledField.setText(records.get(i));
        vbox.getChildren().add(filledField);
    }
}

在此之后,用户可以填写免费的TextField。我如何在VBox中更新它们?

然后,我想检查它们中是否有一个是空的(如何?),在这种情况下,我将用"true"填充它们。

编辑:所以我要这样做:

代码语言:javascript
复制
for (int i = 0; i < vbox.getChildren().size(); i++) {
     if (((TextField) vbox.getChildren().get(i)).getText()==null) {
         TextField filledField = new TextField("true");
         ((TextField) vbox.getChildren().get(i)).setText("true");
         //System.out.println(((TextField)vbox.getChildren().get(i)).getText()); 
     }
}

我的问题是,当我在控制台中打印时,当字段为空时,我确实会看到true。但在我的应用程序中,字段仍然是空的。我是否需要在更新所有字段之后更新vbox或其他什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 00:36:18

如果将属性设置为此值,则TextField的文本仅变为null。但是,这不是一个好主意,因为您需要检查null和空字符串(后者是添加一些字符并从TextField中删除它们的结果)。

在这种情况下,最简单的解决方案是不这样做,并使用String.isEmpty进行检查:

代码语言:javascript
复制
for (String record : records) {
    TextField textField = new TextField();
    if (!record.contains("NEW")) {
        textField.setEditable(false);
        textField.setText(record);
    }
    vbox.getChildren().add(textField);
}
代码语言:javascript
复制
for (Node child : vbox.getChildren()) {
    TextField tf = (TextField) child;
    if (tf.getText().isEmpty()) {
        tf.setText("true");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50807461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档