我正在尝试使用BorderPanes进行练习,到目前为止,这是一场噩梦。我试图使我的标签仅显示在窗口中而无济于事。有任何想法吗?

Label arrayLabel = new Label("NUMBERS");
BorderPane.setAlignment(arrayLabel, Pos.TOP_CENTER);

TextField search = new TextField();
Button btn = new Button("search");
HBox searchbox = new HBox(2);
searchbox.getChildren().addAll(search, btn);
searchbox.setAlignment(Pos.CENTER);

BorderPane root = new BorderPane(arrayLabel);
root.setPrefSize(600, 600);
root.setCenter(searchbox);

最佳答案

BorderPane在任何区域中只能有一个节点。 (该节点当然可以是包含任意数量其他节点的父节点。)constructor taking a single parameter将该参数视为要在中心显示的节点。

所以

BorderPane root = new BorderPane(arrayLabel);


相当于

BorderPane root = new BorderPane();
root.setCenter(arrayLabel);


当您随后(立即)拨打电话时

root.setCenter(searchbox);


中心节点被searchbox替换,因此arraylabel不再是BorderPane的一部分。

目前还不清楚您打算做什么:您实际上是在试图将两个不同的UI组件(arrayLabelsearchbox)放入同一BorderPane的同一区域中。没有信息(向我们或试图定位这些节点的可怜的BorderPane提供)如何将这两个组件相对放置。就您希望这些布局如何而言,您实际上想实现什么?

10-06 11:21