放課後プログラミング

調べたことや考えたことなどを忘れないために書きます。

JavaFXのAnchorPaneとかVBoxとか使うと変な隙間ができる

正しいお作法はよく知らないが、結論から言うとBorderPaneを一番上に使うことで解決した。

掲題で言っている隙間とは、例えば以下のようなfxmlを書いた時(Scene Builderで作った時)

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
            prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <children>
        <VBox prefHeight="400.0" prefWidth="600.0">
            <children>
                <AnchorPane prefHeight="80.0" prefWidth="600.0" style="-fx-background-color: #888;"/>
                <AnchorPane prefHeight="240.0" prefWidth="600.0"/>
                <AnchorPane prefHeight="80.0" prefWidth="600.0" style="-fx-background-color: #888;"/>
            </children>
        </VBox>
    </children>
</AnchorPane>

Scene Builder上では以下のように見えている
f:id:hiroaki-kono:20150506053134p:plain

にも関わらず、実行してみると以下のようなwindowが現れる。
f:id:hiroaki-kono:20150506052952p:plain

これがググってみたが何故か原因は出てこずわからなかった。デフォルトのpaddingが設定されているのかと思ってcssで0にしてみても変わらずだったのでよくわからない。

ググり方が悪いのか僕の環境特有なのかわからないが、以前にも同じことで悩んだので解決策だけメモしておく。