当前位置: 首页 > 知识库问答 >
问题:

在滚动窗格中添加一堆按钮最好的方法是什么?

樊杰
2023-03-14

我对JavaFx有点陌生,对于我的应用程序,我需要在屏幕的一部分上设置一堆不确定的按钮。因为在程序启动之前我不知道需要多少个按钮,所以我想在屏幕的这一部分设置一个滚动窗格,然后在那里动态地添加一堆包含按钮的HBox(我使用<>个按钮列表和<>个HBox,所以我可以为每8个按钮创建一个新的HBox)。

这个想法是使用ScrollPane在包含按钮的不同HBox之间滚动,所以我不需要总是显示所有按钮。问题是,似乎您不能直接将一堆HBox添加到滚动窗格中。有没有办法执行这个??我的代码如下所示:

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);
}

共有1个答案

丁韬
2023-03-14

听起来你想要你的按钮布局在一个网格内的滚动窗格。

相应的布局是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); }
}
 类似资料:
  • 我一直在尝试制作一个包含可以选择和配置的字符串的滚动窗格。我一直在研究如何在滚动窗格中实现JList,但没有一种方法有效,这是因为指南一直在使用swing滚动窗格(

  • 基于此注释https://stackoverflow.com/a/29530135/1387524,我添加了一个ScrollPane,以便在画布移到可见区域之外时使用滚动。

  • grid.add(button,c,r)出现错误;表示“type GridPane中的方法add(node,int,int)不适用于参数(Button,int,int)”。这是一件微不足道的事,但我不知道有什么问题。我知道这是在说我试图将按钮放在节点应该放在的位置,但我查阅了将按钮添加到gridpanes中的示例,它们具有完全相同的语法,没有任何问题。 抱歉,如果这个问题已经问过/回答过,我找不到

  • 问题我如何可以嵌入这个应用程序到SPlitPane,在左边将是另一个面板。 不幸的是,代码导致了错误的坐标,

  • 本文向大家介绍js实现文字在按钮上滚动的方法,包括了js实现文字在按钮上滚动的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现文字在按钮上滚动的方法。分享给大家供大家参考。具体如下: 文字在按钮上滚动,以吸引人的注意,点击按钮后跳转到指定的网址,运行本演示代码后,在效果演示区可看到文字在按钮内的滚动效果。按钮的颜色和文字大小都可以重新定义。 运行效果如下图所示: 在线演示地址如

  • 问题内容: 如何在Android中动态添加按钮? 问题答案: