Hi,

Ah, of course, I should have realized that myself.

It would be nice if there was a warning or a property developers can set to
prevent that, for example, to check and throw an error if a node is used
twice.

Thanks for pointing it out, and apologies for reporting a non-issue.

(P.S. I sent another email just before this that I don't think falls into
the same user-error category!)



Kind regards,
Cormac

On Sat, 8 Nov 2025 at 23:08, John Hendrikx <[email protected]> wrote:

> Hi,
>
> I'm guessing you're setting the disappearing item as "Graphic", because it
> is a Label and not a string.  However, you can only set a Node (anywhere,
> including as graphic) in one part of the scene graph.  Setting it somewhere
> else will cause it to be removed in the old location (without warning
> unfortunately).
>
> In this case, the Label is likely used as graphic in two places: once in
> the list (as a cell), and once in the edit area (as another cell) of the
> ComboBox when it was the last one selected.  This is causing the odd
> disappearing artifact.
>
> Best practice is to not use Nodes as items for a ComboBox.  Instead, use a
> Record or some other type that the ListCell::updateItem will convert to be
> shown in the way you want.
>
> --John
> On 08/11/2025 22:26, Cormac Redmond wrote:
>
> Hi,
>
> There is a bug whereby if you select a ComboBox item the item disappears /
> becomes invisible.
>
> This ComboBox consists of strings and a Label node and the Label node will
> disappear from the dropdown if it's selected (though, continue to take
> up space).
>
> I'm just picking a Label for example, it appears to happen with any Node
> that I've tried.
>
> [image: bug_cb.gif]
>
>
> Steps to reproduce (JFX 26, master branch). Note: I've kept the sample
> small intentionally, but if you use a CellFactory (to call setText() or
> setGraphic() accordingly, as normal), the *same* thing happens. In other
> words, the bug doesn't seem to be because of "mis-use" of the ComboBox by
> mixing types -- I think.
>
> public class ComboBoxDisappearingItemBug extends Application {
>     public static void main(String[] args) {
>         launch(args);
>     }
>
>     public void start(Stage stage) {
>         ComboBox<Object> cb = new ComboBox<>();
>         cb.getItems().addAll("Apple", "Banana", new Label("I will
> disappear"), "Carrot", "Lettuce");
>         cb.getSelectionModel().selectFirst();
>         stage.setScene(new Scene(cb, 200, 100));
>         stage.show();
>     }
> }
>
>
>
> Kind Regards,
> Cormac
>
>

Reply via email to