In general, the problem is this: when adding buttons to a Table, a shift in their area of depression occurs. Figure 1. shows a general view of the UI, 2 shows approximate places of response.
If you add a button directly to the stage, everything works fine.
public class SettingsState extends State { private Stage uiStage; private Table table; //1 private Button musicButton; private Slider musicSlider; //2 private Button soundButton; private Slider soundSlider; //3 private TextField defaultName; private TextButton okButton; //4 private CheckBox mouseControl; //5 private Label up; private TextField upText; //6 private Label down; private TextField downText; //7 private Label left; private TextField leftText; //8 private Label right; private TextField rightText; //9 private Label special; private TextField specialText; public SettingsState(GameStateManager gsm) { super(gsm); uiStage = new Stage(); BackgroundActor bgActor = new BackgroundActor(2); bgActor.setSize(Gdx.graphics.getWidth(),Gdx.graphics.getHeight()); uiStage.addActor(bgActor); musicButton = new Button(ResourceLoader.getInstance().UI_SKIN,"music"); musicSlider = new Slider(0,10,1,false,ResourceLoader.getInstance().UI_SKIN); musicSlider.setValue(8); soundButton = new Button(ResourceLoader.getInstance().UI_SKIN,"sound"); soundSlider = new Slider(0,10,1,false,ResourceLoader.getInstance().UI_SKIN); defaultName = new TextField("",ResourceLoader.getInstance().UI_SKIN); defaultName.setMessageText("Write your default name"); okButton = new TextButton("Ok",ResourceLoader.getInstance().UI_SKIN,"default"); mouseControl = new CheckBox(" Mouse control",ResourceLoader.getInstance().UI_SKIN,"switch"); up = new Label("Up",ResourceLoader.getInstance().UI_SKIN,"subtitle"); down = new Label("Down",ResourceLoader.getInstance().UI_SKIN,"subtitle"); left = new Label("Left",ResourceLoader.getInstance().UI_SKIN,"subtitle"); right = new Label("Right",ResourceLoader.getInstance().UI_SKIN,"subtitle"); special = new Label("Special",ResourceLoader.getInstance().UI_SKIN,"subtitle"); up.setAlignment(Align.center); down.setAlignment(Align.center); left.setAlignment(Align.center); right.setAlignment(Align.center); special.setAlignment(Align.center); upText = new TextField("W",ResourceLoader.getInstance().UI_SKIN); downText = new TextField("S",ResourceLoader.getInstance().UI_SKIN); leftText = new TextField("A",ResourceLoader.getInstance().UI_SKIN); rightText = new TextField("D",ResourceLoader.getInstance().UI_SKIN); specialText = new TextField("SPACE",ResourceLoader.getInstance().UI_SKIN); upText.setAlignment(Align.center); downText.setAlignment(Align.center); leftText.setAlignment(Align.center); rightText.setAlignment(Align.center); specialText.setAlignment(Align.center); table = new Table(/*ResourceLoader.getInstance().UI_SKIN*/); table.setSize(Gdx.graphics.getHeight()/2, Gdx.graphics.getHeight()/2); table.setPosition(Gdx.graphics.getWidth()/2-table.getWidth()/2, Gdx.graphics.getHeight()/2-table.getHeight()/2); int pad = 5; int elements = 9; float height = ((table.getHeight()-50)/elements)-pad*2; int firstCollumnWidth = (int) (table.getWidth()/8*3); int secondCollumnWidth = (int) (table.getWidth()/8*4); table.defaults().expand(); table.add(musicButton); table.add(musicSlider).width(secondCollumnWidth); table.row(); table.add(soundButton); table.add(soundSlider).width(secondCollumnWidth); table.row(); table.add(mouseControl).pad(pad).center().colspan(2).height(height); table.row(); table.add(okButton).pad(pad).width(firstCollumnWidth).height(height); table.add(defaultName).pad(pad).width(secondCollumnWidth).height(height); table.row(); table.add(up).pad(pad).width(firstCollumnWidth).height(height); table.add(upText).pad(pad).width(secondCollumnWidth).height(height); table.row(); table.add(down).pad(pad).width(firstCollumnWidth).height(height); table.add(downText).pad(pad).width(secondCollumnWidth).height(height); table.row(); table.add(left).pad(pad).width(firstCollumnWidth).height(height); table.add(leftText).pad(pad).width(secondCollumnWidth).height(height); table.row(); table.add(right).pad(pad).width(firstCollumnWidth).height(height); table.add(rightText).pad(pad).width(secondCollumnWidth).height(height); table.row(); table.add(special).pad(pad).width(firstCollumnWidth).height(height); table.add(specialText).pad(pad).width(secondCollumnWidth).height(height); uiStage.addActor(table); /*window.add(table); uiStage.addActor(window);*/ Gdx.input.setInputProcessor(uiStage); } @Override protected void handleInput() { musicSlider.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { //preference.setVolumen(volumenSlider.getValue()); } }); soundSlider.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { //preference.setSound(volumenSlider.getValue()); } }); okButton.addListener(new ClickListener(){ @Override public void clicked(InputEvent e, float x, float y){ } }); } @Override public void update(float dt) { uiStage.act(Gdx.graphics.getDeltaTime()); } @Override public void render(SpriteBatch sb) { uiStage.draw(); } @Override public void dispose() { } @Override public void doWhenClose() { }} How to fix everything to click in their places?


