JavaFX:使BorderPane Center内容不会延伸

时间:2014-03-10 13:18:13

标签: javafx border borderpane gridpane

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

我有以下应用程序,显然它使用BorderPane进行布局。我在GridPane区域中有textFields个5个标签和5个Center,我想要一个微妙的边框。

screenshot

正如您所看到的,GridPane利用Center区域中分配给它的完整空间,虽然边框绘制得很好,但它一直向下到{ {1}}区域(红色箭头)。 我想要它做的是在蓝线处完成。

例如,我尝试使用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;

1 个答案:

答案 0 :(得分:1)

我担心BorderPane的行为是设计的(ref):

  

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

您应该将GridPane放在AnchorPaneVBox中并将其(AnchorPaneVBox)放在{{1}的中心}}