【发布时间】:2022-09-07 04:38:44
【问题描述】:
在 BorderPane 的中心创建 GridPane 时,它是二次的,一切都很好:
但是一旦我将 VBox 或任何其他元素添加到 BorderPane 的左侧插槽,它看起来像这样:
我需要 GridPane 保持二次方,至少在创建之后是这样。当调整大小时,单元格保持二次方并不重要,但它们应该是初始的。
我还尝试将 GridPane 包装在 VBox 中,将 VBox 包装在 HBox 中并绑定它们的高度和宽度属性,但这只会使单元格保持相同的大小。
我认为如果可以告诉 GridPane 不要向上、向下和按站点填充空白空间,那将很容易。
fxml 文件:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<?import javafx.scene.layout.*?>
<BorderPane maxHeight=\"-Infinity\" maxWidth=\"-Infinity\" xmlns=\"http://javafx.com/javafx/16\" xmlns:fx=\"http://javafx.com/fxml/1\" fx:controller=\"gui.UserInterfaceController\">
<center>
<GridPane fx:id=\"grdPn\" gridLinesVisible=\"true\" onMouseClicked=\"#onGrdPnMouseClicked\">
<columnConstraints>
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
<ColumnConstraints hgrow=\"SOMETIMES\" minWidth=\"10.0\" prefWidth=\"30.0\" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight=\"10.0\" prefHeight=\"30.0\" vgrow=\"SOMETIMES\" />
<RowConstraints minHeight=\"10.0\" prefHeight=\"30.0\" vgrow=\"SOMETIMES\" />
</rowConstraints>
</GridPane>
</center>
<left>
<VBox prefHeight=\"306.0\" prefWidth=\"100.0\" BorderPane.alignment=\"CENTER\" />
</left>
</BorderPane>
创建舞台和场景:
FXMLLoader fxmlLoader = new FXMLLoader(ApplicationMain.class.getResource(\"sample.fxml\"));
Scene scene = new Scene(fxmlLoader.load());
stage.setTitle(\"Example\");
stage.setScene(scene);
stage.show();
如果您移除 VBox,GridPane 将再次变为方形。
-
抱歉,马上上来。
-
基本上,你得到了中间布局,因为你在 vbox 上硬编码大小限制:不要 :) 顺便说一句:确保你了解每个布局窗格是如何工作的(研究它的广泛的 java doc 和/或周围有很多教程 :) 对于任何下一个问题:请遵循参考帮助页面中的建议 - 该示例必须按原样运行(这不是,即使将 start 方法的内容复制到快速设置的应用程序中 -由于缺少控制器,它会在加载时抛出 ..)
标签: java javafx gridpane borderpane