对你来说只是一个快速的,因为我在设计应用程序方面缺乏经验。任何帮助将不胜感激。
我有以下应用程序,显然它使用BorderPane
进行布局。我在GridPane
区域中有textFields
个5个标签和5个Center
,我想要一个微妙的边框。
正如您所看到的,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;
答案 0 :(得分:1)
我担心BorderPane
的行为是设计的(ref):
将顶部和底部儿童调整到他们喜欢的高度,并扩展边框的宽度。左右子项将调整为其首选宽度,并扩展顶部和底部节点之间的长度。 中心节点将调整大小以填充中间的可用空间。
您应该将GridPane
放在AnchorPane
或VBox
中并将其(AnchorPane
或VBox
)放在{{1}的中心}}