That's my point. Currently, a node can serve as the graphics property for
multiple Labels, but will appear only in 1 because it can only have a
single parent in the scenegraph. While this is technically fine, it causes
issues like the one I showed above. I'm not sure if a node is supposed to
be able to serve as multiple graphics (and displayed only in the last Label
it was set to?), or removed from other Labels' graphic properties just like
is done for children in the scenegraph. Personally, I find it confusing
that label.getGraphics() will return a node that isn't shown in that label.

On Thu, Dec 1, 2022 at 2:21 PM John Hendrikx <john.hendr...@gmail.com>
wrote:

> 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
>

Reply via email to