Scene2D UI Adding 3 elements

Hey folks,

Can anyone give me a hand with this? I’ve been tearing my hair out for about 3 days now.

This code:

public void manage(final GameScreen screen) {
        Window window = new Dialog("Manage Wall", screen.game.skin, "dialog");
        window.setMovable(false);
        screen.stage.addActor(window);
        screen.stageShowing = true;
        
        Button accept = new TextButton("Accept", screen.game.skin);
        window.add(accept).center();
        
        window.setX((screen.getResX() / 2) - (window.getWidth() / 2));
        window.setY((screen.getResY() / 2) - (window.getHeight()/ 2));
        
        window.debug();
    }

Produces this result:

I have no idea why there are 2 empty elements in the window, nor how to get rid of them.

Any advice appreciated.

It’s because you are using a Dialog instead of a Window. Dialog is better suited for modal pop-up windows, and it includes a “button” and “content” table already in the window (as the docs say). You can grab these tables with getButtonTable() or getContentTable().

The dialog makes it easy to work with pop up windows. For example, here is a confirmation dialog:

Dialog diag = new Dialog("Warning", skin, "dialog") {
    public void result(Object obj) {
        System.out.println("result "+obj);
    }
};
dialog.text("Are you sure you want to quit?");
dialog.button("Yes", true); //sends "true" as the result
dialog.button("No", false);  //sends "false" as the result
dialog.key(Keys.Enter, true); //sends "true" when the ENTER key is pressed
dialog.show();

You can use other objects for, say, Yes/No/Cancel options.

If you’d rather make your own dialog, just extend Window and make it modal. :slight_smile: