いくつかの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"
私はコンストラクタにentry
を渡すときvbox
が子供としてentry
失っているなぜあなたは私を啓発してくださいことはできますか?私はentry
をコンストラクタに渡して、FXMLフォームを介して既に設定されている他のすべてのオブジェクト属性/プロパティをコピーします。私の実際のコードでは、各要素はnode.setId()
メソッドで設定された異なる識別子を持っているので、重複するIDは問題ではありません。根底にあるメカニズムを認識していませんか?ありがとうございました。
あなたは 'HBoxのnewEntry =エントリを行う必要があります;'の代わりに '新しいHBoxの(エントリー)の;' – ScriptKiddy
私はそれで、 'newEntry'が' entry'を指していて、 'newEntry'で修正したものが' entry'を変更するので、そう思わないでください。 – Marius