我有一个记录列表和两种TextField
s:填充和空。我将它们放在VBox
。
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"
填充它们。
编辑: 所以我这样做:
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或其他内容?
答案 0 :(得分:0)
如果您将属性设置为此值,则TextField
的文字只会变为null
。这是一个坏主意,因为您需要检查null
和空字符串(后者是添加一些字符并从TextField
删除它们的结果)。
在这种情况下,最简单的解决方案是不要这样做并使用String.isEmpty
进行检查:
for (String record : records) {
TextField textField = new TextField();
if (!record.contains("NEW")) {
textField.setEditable(false);
textField.setText(record);
}
vbox.getChildren().add(textField);
}
for (Node child : vbox.getChildren()) {
TextField tf = (TextField) child;
if (tf.getText().isEmpty()) {
tf.setText("true");
}
}