我有一个ChoiceFieldComponent,当它被点击时显示 PopupView . PopupView 的内容是定制的ChoiceMenu,显示鸡尾酒成分列表 . 由于配方的配料数量不同,可以添加/删除ChoiceField .

从其父级 View 中删除ChoiceField时,似乎仍然存在强引用,这会阻止ChoiceField和ChoiceMenu进行垃圾回收 .

我认为这是发生的,因为 PopupView 拥有对两个节点的引用:

popup = new PopupView(getSkinnable(), choiceMenu);

我试图通过以下方式删除对 choiceMenu 的引用:

BorderPane container = (BorderPane) popup.lookup(".container");
container.setCenter(null);

但仍有对 PopupView.ownerNode (ChoiceField)的引用,我无法理解 . 因为 PopupViews 的数量随着每个ChoiceField的增加而增加,我想知道是否有办法删除 PopupView .