Internally the graphics is just a child node, and nodes can't be part of
the scene graph twice (this is done in LabeledSkinBase).
It showing up only once is probably because it is getting removed from
the other labels.
I think things are probably getting out of sync, where the graphics
property may think it still has a certain node as its graphics, but it
is no longer a child of the label.
--John
On 01/12/2022 11:23, Nir Lisker wrote:
Hi,
Given the following code
var cb1 = new Label("1");
var cb2 = new Label ("2");
var b1 = new Button("A");
cb1.setGraphic(b1);
b1.setOnAction(e -> {
if (b1.getParent() == cb1) {
// cb1.setGraphic(null);
cb2.setGraphic(b1);
} else {
// cb2.setGraphic(null);
cb1.setGraphic(b1);
}
});
Pressing the first button will move it (the graphic) to the second
label, however, pressing it again will not move it back to the first
label. It's required to set the graphics to null prior to moving them
as in the commented lines. This looks like a bug to me. I would think
that when a graphic is moved, it will appear in its new label
immediately, like moving a child. Apparently a single node can be the
graphics for multiple Labeled nodes, but it will appear only in 1. Is
this intentional?
- Nir