我对JavaFx有点陌生,对于我的应用程序,我需要在屏幕的一部分上设置一堆不确定的按钮。由于我不知道程序启动前需要多少个按钮,因此我考虑在屏幕的此部分设置 ScrollPane ,然后动态添加一堆包含按钮的 HBox (我使用按钮的列表 和 HBox 的列表 ,因此我可以为每8个按钮创建一个新的 HBox )。这个想法是使用 ScrollPane 来在包含按钮的不同 HBox 之间滚动,因此我不必总是显示所有按钮。问题是,您似乎无法直接将一堆 HBox 添加到 ScrollPane 中。反正有执行此操作吗?我的代码将如下所示:public void startApp(int nDetect){ this.primaryStage = new Stage(); this.nDetect = nDetect; BorderPane bp = new BorderPane(); Group root = new Group(); . . . LinkedList<Button> buttons = new LinkedList<>(); LinkedList<HBox> boxes = new LinkedList<>(); for(int i=0; i<this.nDetect; i++) { if(i%8 == 0){ boxes.add(new HBox()); boxes.get(i/8).setSpacing(5); } boxes.get(i/8).getChildren().add(buttons.get(i)) //add the button to the appropriate HBox } ScrollPane spane = new ScrollPane(); for( HBox h : boxes){ //add every element in "boxes" to the ScrollPane } bp.setTop(spane); root.getChildren().add(bp);} 最佳答案 听起来好像您希望按钮在滚动窗格内的网格内布局。合适的布局是 GridPane 。import javafx.application.Application;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.*;import javafx.scene.layout.GridPane;import javafx.stage.Stage;public class ButtonLinesInScrollPane extends Application { private static final double BUTTONS_PER_LINE = 8; private static final double NUM_BUTTON_LINES = 8; private static final double BUTTON_PADDING = 5; @Override public void start(Stage stage) { GridPane grid = new GridPane(); grid.setPadding(new Insets(BUTTON_PADDING)); grid.setHgap(BUTTON_PADDING); grid.setVgap(BUTTON_PADDING); for (int r = 0; r < NUM_BUTTON_LINES; r++) { for (int c = 0; c < BUTTONS_PER_LINE; c++) { Button button = new Button(r + ":" + c); grid.add(button, c, r); } } ScrollPane scrollPane = new ScrollPane(grid); stage.setScene(new Scene(scrollPane)); stage.show(); } public static void main(String[] args) { launch(args); }}关于javafx - 将一堆Button添加到ScrollPane的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29212703/ 10-10 23:17