[LibGDX] Creating menu. Button madness?

             Well I have officially lost my sanity trying to create a menu. I managed to succesfully create some tiny button on the screen but now I have no idea wether to check if the mouse is over it, or clicked it, and until now I did not realize you could put a whole new method in a constructor?! 

              Seriously, can someone explain to me how this even works?
buttonPlay.addListener(new ChangeListener(){

			@Override
			public void changed(ChangeEvent event, Actor actor) {
				gameCore.setScreen(gameCore.gameScreen);
			}
		});

It makes absolutely no sense reading it, and I feel its an important topic I should learn for game development. Hopefully if I can learn this I can create much better things. Here’s the rest of my code, not sure if I’m making buttons completely wrong, I heard you needed a table to set the buttons position but I supposed it couldn’t hurt its mouse detection much.

stage = new Stage();
		buttonAtlas = new TextureAtlas(Gdx.files.internal("data/Resources/Gui/Buttons.atlas"));
		skin = new Skin(buttonAtlas);
		buttonStyle = new TextButtonStyle();
		buttonStyle.font = new BitmapFont();
		buttonStyle.up = skin.newDrawable("ButtonWood");
		buttonStyle.down = skin.newDrawable("ButtonWood_Down");
		
		buttonPlay = new TextButton("Play",buttonStyle);
		buttonPlay.setPosition(400, 400);
		
		buttonPlay.addListener(new ChangeListener(){

			@Override
			public void changed(ChangeEvent event, Actor actor) {
				gameCore.setScreen(gameCore.gameScreen);
			}
		});
		
		buttonExit = new TextButton("Exit",buttonStyle);
		buttonExit.setPosition(400, 300);
		buttonLoad = new TextButton("Load",buttonStyle);
		buttonLoad.setPosition(400,  200);
		buttonSave = new TextButton("Save",buttonStyle);
		buttonSave.setPosition(400, 100);
		
		stage.addActor(buttonPlay);
		stage.addActor(buttonExit);
		stage.addActor(buttonLoad);
		stage.addActor(buttonSave);