我有一个记录列表和两种类型的TextField:填充和空。我把这些放在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或其他什么?
发布于 2018-06-12 00:36:18
如果将属性设置为此值,则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");
}
}https://stackoverflow.com/questions/50807461
复制相似问题