CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

第4章 JavaFX による GUI プログラミング : 問題 6 : レイアウト

問題

BorderPaneの Top と Bottom の配置をセンタリングせよ

サンプル

BorderPaneは5つのエリア(Node)を持っている

http://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/doc-files/borderpane.png

5つのエリアにボタンを配置すると

public void start(Stage stage) throws Exception {
    BorderPane pane = new BorderPane();
    pane.setTop(new Button("Top"));
    pane.setLeft(new Button("Left"));
    pane.setCenter(new Button("Center"));
    pane.setRight(new Button("Right"));
    pane.setBottom(new Button("Bottom"));
    stage.setScene(new Scene(pane));
    stage.show();
}

f:id:ClosedUnBounded:20150727130736p:plain

と、Top と Bottom は左寄せ

解答

public void start(Stage stage) throws Exception {
    BorderPane pane = new BorderPane();
    Button top = new Button("Top");
    BorderPane.setAlignment(top, Pos.TOP_CENTER);        // ← 注目
    pane.setTop(top);
    pane.setLeft(new Button("Left"));
    pane.setCenter(new Button("Center"));
    pane.setRight(new Button("Right"));
    Button bottom = new Button("Bottom");
    BorderPane.setAlignment(bottom, Pos.BOTTOM_CENTER);  // ← 注目
    pane.setBottom(bottom);
    stage.setScene(new Scene(pane));
    stage.show();
}

f:id:ClosedUnBounded:20150727131713p:plain

ちなみにBoderPaneの static メソッドで変更できるレイアウトはアライメント以外にマージンがある

BorderPane.setMargin(top, new Insets(12,12,12,12));