亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

循環遍歷 FXML 元素并將其中一些元素添加到列表時遇到問題

循環遍歷 FXML 元素并將其中一些元素添加到列表時遇到問題

幕布斯6054654 2023-08-04 14:40:14
仍然很難讓我的循環正常工作。期待:我正在構建一個簡單的 JavaFX 應用程序,其 UI 通過幾個 TextFields 和幾個按鈕接受輸入。我已經構建了一個&ldquo;重置&rdquo;按鈕,該按鈕應該清除所有文本字段中的文本,但我無法讓它工作。該按鈕的方法在 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:?@FXMLpublic 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;就好像它直接跳過它們一樣。我的方法有什么問題嗎?
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

您可以使用基于“TextField”CSS 類型的 CSS 選擇器的查找來遞歸查找給定父節點的所有文本字段。


@SuppressWarnings("unchecked")

private Set<TextField> lookupTextFields(Parent parent) {

? ? return (Set<TextField>)(Set<?>) parent.lookupAll("TextField");

}

奇怪的類型鑄造來自:

  • 如何將超類型列表轉換為子類型列表?


有時,為了使查找正常運行,您需要生成布局通道;看:

  • 獲取JavaFX中節點的高度(生成布局通道)

這是通過在調用之前調用以下命令來完成的lookupAll

parent.applyCss();
parent.layout();

但是,對于您的特定情況,不太可能需要生成布局過程。FXML 加載器在 FXML 加載調用期間已經構造了足夠的場景圖,基于“TextField”css 選擇器的查找將起作用。



查看完整回答
反對 回復 2023-08-04
  • 1 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號