1

对你来说只是一个快速的,因为我通常在设计应用程序方面缺乏经验。任何帮助将不胜感激。

我有以下应用程序,很明显它使用 aBorderPane作为布局。我在该地区GridPane有 5 个标签和 5 个标签,我想要一个微妙的边框。textFieldsCenter

截屏

如您所见,它GridPane利用了该区域中分配给它的全部空间Center,尽管边界绘制得很好,但它一直向下延伸到该Center区域的底部(红色箭头)。 我想要它做的是在蓝线结束。

例如,我尝试使用grid.setPrefHeight(400);,但它不起作用。

除了显而易见的解决方案之外,还有其他解决方案,在下方添加第二个容器GridPane并充分挤压上部容器吗?

编辑:作为参考,这是创建中心区域的代码GridPane

public GridPane addGridPaneCenter() {
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(0, 10, 0, 10));

sihuid = new Text("SIHU ID:");
sihuid.setFont(Font.font("Inconsolata", 16));
grid.add(sihuid, 0, 1);                                           //spans from 0,1 to 1,1 (Column-Row)
sihuid_tf = new TextField();
sihuid_tf.setEditable(false);
grid.add(sihuid_tf, 1, 1);

mac = new Text("Plug MAC:");
mac.setFont(Font.font("Inconsolata", 16));
grid.add(mac, 0, 2);
mac_tf = new TextField();
mac_tf.setEditable(false);
grid.add(mac_tf, 1, 2);

loc = new Text("Location:");
loc.setFont(Font.font("Inconsolata", 16));
grid.add(loc, 0, 3);
loc_tf = new TextField();
loc_tf.setEditable(false);
grid.add(loc_tf, 1, 3);

appl = new Text("Appliance:");
appl.setFont(Font.font("Inconsolata", 16));
grid.add(appl, 0, 4);
appl_tf = new TextField();
appl_tf.setEditable(false);
grid.add(appl_tf, 1, 4);

type = new Text("Type:");
type.setFont(Font.font("Inconsolata", 16));
grid.add(type, 0, 5);
type_tf = new TextField();
type_tf.setEditable(false);
grid.add(type_tf, 1, 5);

grid.setPrefHeight(400);
grid.setStyle(
    "-fx-border-color: #b8b8ba; -fx-border-width: 1;"
    + "-fx-border-radius: 4;"
    /*+ "-fx-font: " + "Inconsolata" + ";" */
); 
return grid;

}

之后,有一个简单的

GridPane grid_center = addGridPaneCenter();                             //CENTER Grid, contains info about plugs.
        border_pane.setCenter(grid_center);

    Scene scene = new Scene(border_pane, 900, 700);
    scene.setFill(Color.GHOSTWHITE);

    primaryStage.setTitle("PlugControl v0.1e");
    primaryStage.setScene(scene);
    primaryStage.show();
4

1 回答 1

1

恐怕这是BorderPane设计使然的行为(参考):

顶部和底部的孩子将被调整到他们喜欢的高度并扩展边框的宽度。左右子节点将被调整为其首选宽度并延长顶部和底部节点之间的长度。并且中心节点将调整大小以填充中间的可用空间。

您可能应该将 放入GridPaneorAnchorPane并将VBox其 ( AnchorPaneor VBox) 放在BorderPane.

于 2014-03-10T15:21:35.620 回答