怎么修改生成的HBox在JavaFX ToolBar里面的间距?

pyR*_*bit 1 java javafx

如何使用 FXML 更改生成的项目?

创建 JavaFX ToolBar 时,会自动生成嵌套的 HBox(或 VBox)。例如,我想将这个生成的 HBox 的间距设置为 0。

 <ToolBar fx:id="welcomeToolBar" prefHeight="50">
        <items>
                <Button fx:id="closeButton" prefHeight="50" prefWidth="100" onAction="#closeWindow" text="Close" />
                <Button text="New Image" prefHeight="50" prefWidth="100" onAction="#newImage" styleClass="button-accent"/>
                <Pane HBox.hgrow="ALWAYS"/>
                <CheckBox text="Hide this window on application start"
                          fx:id="hideOnLoadCheckBox" onAction="#setVisibilityOnApplicationLoad"/>
        </items>
 </ToolBar>
Run Code Online (Sandbox Code Playgroud)

Scenic View 快照显示自动生成的 HBox

Sla*_*law 5

使用 CSS 属性-fx-spacing(使用<size>类型)。您可以在单独的 CSS 文件中执行此操作并链接该文件,或者使用该style属性直接在 FXML 文件中执行此操作。

示例 FXML:

<ToolBar fx:id="welcomeToolBar" prefHeight="50" style="-fx-spacing: 0px;">
    <!-- items -->
</ToolBar>
Run Code Online (Sandbox Code Playgroud)

示例 CSS:

.tool-bar {
    -fx-spacing: 0px;
}
Run Code Online (Sandbox Code Playgroud)

这样做的原因是该类的默认皮肤ToolBar公开了StyleableProperty间距1 的 a。我在Scene Builder的“CSS Analyzer”和 JavaFX 9(和 8)2源代码中找到了它(由于某种原因无法运行Scenic View)。但是,我找不到有关此属性的任何文档;甚至在JavaFX CSS 参考指南中


1.默认皮肤(至少在 JavaFX 13 中)公开的另一个未记录的样式属性是-fx-alignment接受javafx.geometry.Pos. 这些属性分别应用于HBoxVBox取决于工具栏的方向是水平还是垂直。

2. 仍然存在于 JavaFX 13 源代码中。