JavaFX BorderPane установил несколько кнопок на нижнюю? - PullRequest
2 голосов
/ 11 июля 2020

Можно ли установить несколько Buttons на Bottom (слева, по центру, справа)?

Вот что я пробовал:

    private Pane createPane() {
        BorderPane rootPane = new BorderPane();
        rootPane.setTop(createMenueBar());
        rootPane.setCenter(createTableView(model.getIssues()));
        
        rootPane.setBottom(createDeleteIssueButton());  
        rootPane.setBottom(createCloseIssueButton());
        rootPane.setBottom(createCreateNewIssueButton());
        
        BorderPane.setAlignment(deleteIssueButton, Pos.BOTTOM_LEFT);
        BorderPane.setAlignment(closeIssueButton, Pos.BOTTOM_CENTER);
        BorderPane.setAlignment(createIssueButton, Pos.BOTTOM_RIGHT);
        return rootPane;
    }

Результат :

введите описание изображения здесь

Как видите, отображаются только последние добавленные Button. Как лучше всего сделать это с помощью JavaFX / BorderPane? Я новичок в этом, поэтому дайте мне знать, если вам понадобится дополнительная информация!

1 Ответ

3 голосов
/ 11 июля 2020

Вложенные макеты

Соберите несколько кнопок в диспетчере макетов . Поместите этот объект менеджера компоновки в нижнюю позицию вашего BorderPane.

Например, вы можете выбрать FlowPane в качестве менеджера компоновки.

FlowPane buttons = new FlowPane() ;
buttons.getChildren().addAll( deleteIssueButton , closeIssueButton , createIssueButton ) ;

BorderPane размещает только единственный виджет в нижнем слоте. Вы хотите, чтобы ваш контейнер кнопок был этим виджетом.

BorderPane rootPane = new BorderPane();
rootPane.setBottom( buttons ) ;

Использование вами Pos.BOTTOM_LEFT, и это определяет, где виджет размещается в нижнем слоте. BOTTOM в BOTTOM_LEFT означает нижний слот данного пространства в слоте, а не нижнюю часть BorderPane. Здесь задействованы два разных низа.

BorderPane.setAlignment( buttons , Pos.CENTER ) ;
...