我正在尝试使用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组件(
arrayLabel
和searchbox
)放入同一BorderPane
的同一区域中。没有信息(向我们或试图定位这些节点的可怜的BorderPane
提供)如何将这两个组件相对放置。就您希望这些布局如何而言,您实际上想实现什么?