2 回答
TA贡献1786条经验 获得超11个赞
当您使用 StackPane 作为根节点时,它会将节点堆叠在一起,因此顶部窗格是 HBox 而不是 ScrollPane,因此您无法使用它。
使用 BorderPane 或 VBox 并尝试。
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 1366, 768);
root.setCenter(scrollPane);
HBox hBox = new HBox(5);
hBox.getChildren().addAll(new Button("cat"), new Button("dog"));
root.setBottom(hBox);
TA贡献1818条经验 获得超8个赞
这里的问题是StackPane
允许调整HBox
它的大小。涵盖HBox
了防止鼠标事件到达ScrollPane
. 您可以通过着色轻松地看到这一点HBox
:
hBox.setStyle("-fx-background-color: rgba(100%, 0%, 0%, 0.5)");
最简单的解决方案是设置HBox
只接收非(完全)透明区域的事件:
hBox.setPickOnBounds(false);
但是,您也可以设置HBox
以占用适合内容的首选大小所需的空间,并通过以下方式进行对齐StackPane
:
hBox.setPrefSize(Region.USE_COMPUTED_SIZE, Region.USE_COMPUTED_SIZE); hBox.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE); StackPane.setAlignment(hBox, Pos.BOTTOM_CENTER); // hBox.setAlignment(Pos.BOTTOM_CENTER);
请注意,使用StackPane
这样的按钮不会为您提供响应式 GUI:如果您将窗口的大小调整到足够小的高度,按钮将覆盖ScrollPane
.
您可能会更好地使用 aBorderPane
或将StackPane
and 包装HBox
在 a 中并VBox
设置VBox.vgrow
为...Priority.ALWAYS
StackPane
添加回答
举报