仍然很难让我的循环正常工作。
期待:
我正在构建一个简单的 JavaFX 应用程序,其 UI 通过几个 TextFields 和几个按钮接受输入。我已经构建了一个“重置”按钮,该按钮应该清除所有文本字段中的文本,但我无法让它工作。
该按钮的方法在 FXML 元素上循环,我希望它能够识别 TextFields 并将它们添加到列表中:
private List<TextField> identifyTextFields(Pane parent) {
List<TextField> textFieldList = new ArrayList<>();
for (Node element : parent.getChildren()) {
if (element instanceof Pane) {
// if element is a container, scan its children
scanNodesForTextFields((Pane) element);
//This line is always false. Why?
if (element instanceof TextField) {
textFieldList.addAll(scanNodesForTextFields((Pane) element));
}
} else if (element instanceof TextField) {
textFieldList.add((TextField) element);
}
}
return textFieldList;
}
然后,textFieldList 返回到此方法,其中循环并清除 textField:
@FXML
public void resetButtonClicked(ActionEvent event) {
List<TextField> textFieldList = identifyTextFields(parentNode);
for (TextField textField : textFieldList) {
textField.setText("");
}
}
现实:
在里面
identifyTextFields(Pane parent)
方法,这一行始终为 false:
if (element instanceof TextField) {
我不懂为什么。我试图从根节点(即锚点窗格)开始循环遍历 FXML 场景图的所有元素。如果内部循环发现其中一个元素是 TextField,则应将其添加到列表中...但它永远不会找到任何 TextField。
我在理解调试结果方面也遇到了一些困难,但在我看来,该方法甚至没有访问 TextFields;就好像它直接跳过它们一样。
我的方法有什么问题吗?
翻阅古今
相关分类