在 JavaFX 中有效创建多个按钮

Effective creation of the multiple buttons in JavaFX

我打算在我的 GUI 上构建一个包含大约 12 个独立按钮的窗格,每个按钮都有不同的名称、文本和 ActionEvent 反应。这是每个按钮的模式:

    Button compB = new Button();
    compB.setText("BtnText");
    compB.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            System.out.println("ADD_INPUT_LINK");
        }
    });  

我想知道是否有一种方法可以使用一个流(或多个流)来为每个按钮分配一个不同的名称、文本和 ActionEvent。 也许有 3 个不同的流,其中的元素具有可用于绑定的可识别 int?

如有任何帮助,我们将不胜感激。

除非您从文件或其他来源读取这些流并且可以在循环中初始化按钮,否则您不会从使用它们中受益。

如果您只想缩短代码,可以使用工厂方法。像这样:

public class Buttons extends Application {

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox();
        Scene scene = new Scene(root, 300, 250);

        doButton(root, "hi", ()->{System.out.println("hi");});
        doButton(root, "hoi", ()->{System.out.println("1");});
        doButton(root, "hei", ()->{System.out.println("2");});
        doButton(root, "hai", ()->{System.out.println("3");});
        doButton(root, "hio", ()->{System.out.println("4");});

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static Button doButton(Pane owner, String name, final Runnable handler) {
        Button compB = new Button();
        compB.setText(name);
        compB.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                handler.run();
            }
        });
        owner.getChildren().add(compB);
        return compB;
    }
}