Source:
private void populateContent() { final GridPane informationContentPane = new GridPane(); informationContentPane.getStyleClass().add("grid"); informationContentPane.add(new TextWithStyle(tr("Version:"), CAPTION_TITLE_CSS_CLASS), 0, 0); Label name = new Label(engineDTO.getVersion()); name.setWrapText(true); informationContentPane.add(name, 1, 0); int rowIdx = 1; for (Map.Entry<String, String> userData : engineDTO.getUserData().entrySet()) { informationContentPane.add(new TextWithStyle(userData.getKey(), CAPTION_TITLE_CSS_CLASS), 0, rowIdx); Label path = new Label(userData.getValue()); path.setWrapText(true); informationContentPane.add(path, 1, rowIdx); rowIdx++; } Button installButton = new Button(tr("Install")); installButton.setOnMouseClicked(evt -> { try { onEngineInstall.accept(engineDTO); } catch (IllegalArgumentException e) { LOGGER.error("Failed to get engine", e); new ErrorMessage(tr("Error while trying to install the engine"), e).show(); } }); Button deleteButton = new Button(tr("Delete")); deleteButton.setOnMouseClicked(evt -> { try { onEngineDelete.accept(engineDTO); } catch (IllegalArgumentException e) { LOGGER.error("Failed to get engine", e); new ErrorMessage(tr("Error while trying to delete the engine"), e).show(); } }); Region spacer = new Region(); spacer.getStyleClass().add("engineSpacer"); VBox.setVgrow(spacer, Priority.NEVER); HBox buttonBox = new HBox(); buttonBox.getStyleClass().add("engineButtons"); buttonBox.getChildren().addAll(installButton, deleteButton); Region progressSpacer = new Region(); progressSpacer.getStyleClass().add("engineSpacer"); VBox.setVgrow(progressSpacer, Priority.NEVER); final VBox content = new VBox(informationContentPane, spacer, buttonBox, progressSpacer); this.setCenter(content); }

Target:
private void populateContent() { final GridPane informationContentPane = new GridPane(); informationContentPane.getStyleClass().add("grid"); informationContentPane.add(new TextWithStyle(tr("Version:"), CAPTION_TITLE_CSS_CLASS), 0, 0); Label name = new Label(engineDTO.getVersion()); name.setWrapText(true); informationContentPane.add(name, 1, 0); int rowIdx = 1; for (Map.Entry<String, String> userData : engineDTO.getUserData().entrySet()) { informationContentPane.add(new TextWithStyle(userData.getKey(), CAPTION_TITLE_CSS_CLASS), 0, rowIdx); Label path = new Label(userData.getValue()); path.setWrapText(true); informationContentPane.add(path, 1, rowIdx); rowIdx++; } Button installButton = new Button(tr("Install")); installButton.setOnMouseClicked(evt -> { try { onEngineInstall.accept(engineDTO); } catch (IllegalArgumentException e) { LOGGER.error("Failed to get engine", e); new ErrorMessage(tr("Error while trying to install the engine"), e).show(); } }); Button deleteButton = new Button(tr("Delete")); deleteButton.setOnMouseClicked(evt -> { try { onEngineDelete.accept(engineDTO); } catch (IllegalArgumentException e) { LOGGER.error("Failed to get engine", e); new ErrorMessage(tr("Error while trying to delete the engine"), e).show(); } }); Region spacer = new Region(); spacer.getStyleClass().add("engineSpacer"); VBox.setVgrow(spacer, Priority.NEVER); HBox buttonBox = new HBox(); buttonBox.getStyleClass().add("engineButtons"); buttonBox.getChildren().addAll(installButton, deleteButton); Region progressSpacer = new Region(); progressSpacer.getStyleClass().add("engineSpacer"); VBox.setVgrow(progressSpacer, Priority.NEVER); this.setCenter(new VBox(informationContentPane, spacer, buttonBox, progressSpacer)); }