java - 如何让我的 StackPane 占据窗口的整个垂直高度?

标签 java javafx fxml borderpane

我正在尝试使 StackPane 位于 <left>我的主 BorderPane 的元素占据了窗口的整个垂直高度,即使在调整大小时也是如此。我怎样才能做到这一点?这是我到目前为止所得到的:

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

<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.Group?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>

<VBox prefWidth="800.0" prefHeight="600.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1">
    <VBox alignment="TOP_CENTER">
        <ToolBar minHeight="50.0" prefHeight="50.0" prefWidth="800.0" stylesheets="@style.css" GridPane.rowIndex="1">
            <ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
                <Image url="@react-toolbar-logo.png"/>
            </ImageView>
        </ToolBar>
        <MenuBar fx:id="menuBar" prefHeight="0.0" prefWidth="0.0"/>
    </VBox>

    <BorderPane xmlns:fx="http://javafx.com/fxml">

        <left>
            <StackPane prefWidth="230">
                <ListView fx:id="listView"/>
            </StackPane>
        </left>
        <right>
            <StackPane>
                <ScrollPane>
                    <Group fx:id="selectionGroup">
                        <ImageView fx:id="mainImageView"/>
                    </Group>
                </ScrollPane>
            </StackPane>
        </right>

    </BorderPane>
</VBox>

最佳答案

堆栈 Pane (以及随后的ListView:我不确定为什么您需要将ListView包装在StackPane中) 填充边框 Pane 的整个高度。你可以看到这个,例如通过更改边框 Pane 的背景颜色。问题是边框 Pane 没有增长以填充周围 VBox 中的所有可用空间。

如果您想让 BorderPane 填充剩余空间,请将其 VBox.vgrow 属性设置为 ALWAYS:

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

<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.Group?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import java.lang.Double?>

<VBox prefWidth="800.0" prefHeight="600.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1">

    <VBox alignment="TOP_CENTER">
        <ToolBar minHeight="50.0" prefHeight="50.0" prefWidth="800.0" GridPane.rowIndex="1">
            <ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
                <Image url="@react-toolbar-logo.png"/>
            </ImageView>
        </ToolBar>
        <MenuBar fx:id="menuBar" prefHeight="0.0" prefWidth="0.0"/>

    </VBox>

    <BorderPane VBox.vgrow="ALWAYS">

        <left>
            <StackPane prefWidth="230">
                <ListView fx:id="listView" />
            </StackPane>

        </left>
        <right>
            <StackPane>
                <ScrollPane>
                    <Group fx:id="selectionGroup">
                        <ImageView fx:id="mainImageView"/>
                    </Group>
                </ScrollPane>
            </StackPane>
        </right>

    </BorderPane>

</VBox>

关于java - 如何让我的 StackPane 占据窗口的整个垂直高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592980/

相关文章:

java - zk框架: message 'unknown message code:<code>' instead of standart labels

javafx - FXML 设置 ButtonType onAction

java jar错误: Unable to access from command line

java - 发起WebSocket连接的HTTP请求失败

JavaFx,FXML,如何根据其 parent 自动调整内容大小: Button, StackPane,Field,Scrollpane

java - 写入 jar 文件中的 xml 文件

java - Fxml 从源设置样式类

javafx - 在FXML中设置JavaFX TableView的占位符

java - 从 Java 创建 MySQL 数据库

调整大小时显示 JavaFX TextArea 滚动条,即使不需要它