我在處理一些java fx組件時觀察到一些奇怪的行爲。我試圖通過控制器動態地將孩子添加到父節點,一旦在GUI上按下按鈕。這是問題的一個可重複的場景:父節點失去孩子
VBox vbox = new VBox();
HBox entry = new HBox();
Button button = new Button();
TextField text = new TextField();
entry.getChildren().add(text);
entry.getChildren().add(button);
vbox.getChildren().add(entry);
System.out.println(vbox.getChildren().isEmpty() ? "empty" : "not empty"); //prints out "not empty"
HBox newEntry = new HBox(entry);
System.out.println(vbox.getChildren().isEmpty() ? "empty" : "not empty"); //prints out "empty"
能否請您賜教爲什麼vbox
失去entry
作爲一個孩子的時候我通過entry
一個構造?我將entry
傳遞給構造函數,以便複製已通過FXML表單設置的所有其他對象屬性/屬性。在我的實際代碼中,每個元素都有一個不同的標識符,通過node.setId()
方法設置,因此重複ID不是問題。我沒有意識到一些潛在的機制?謝謝。
你應該做'HBox中newEntry =條目;'而不是'新HBox中(輸入);' – ScriptKiddy
我不這麼認爲,因爲然後'newEntry'仍然指向'entry',我在'newEntry'中修改的內容將修改'entry' – Marius