2 回答

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
當(dāng)您使用 StackPane 作為根節(jié)點時,它會將節(jié)點堆疊在一起,因此頂部窗格是 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貢獻(xiàn)1818條經(jīng)驗 獲得超8個贊
這里的問題是StackPane
允許調(diào)整HBox
它的大小。涵蓋HBox
了防止鼠標(biāo)事件到達(dá)ScrollPane
. 您可以通過著色輕松地看到這一點HBox
:
hBox.setStyle("-fx-background-color: rgba(100%, 0%, 0%, 0.5)");
最簡單的解決方案是設(shè)置HBox
只接收非(完全)透明區(qū)域的事件:
hBox.setPickOnBounds(false);
但是,您也可以設(shè)置HBox
以占用適合內(nèi)容的首選大小所需的空間,并通過以下方式進(jìn)行對齊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
這樣的按鈕不會為您提供響應(yīng)式 GUI:如果您將窗口的大小調(diào)整到足夠小的高度,按鈕將覆蓋ScrollPane
.
您可能會更好地使用 aBorderPane
或?qū)?code>StackPaneand 包裝HBox
在 a 中并VBox
設(shè)置VBox.vgrow
為...Priority.ALWAYS
StackPane
添加回答
舉報