【问题标题】:Effective creation of the multiple buttons in JavaFXJavaFX中多个按钮的有效创建
【发布时间】:2015-12-27 10:19:50
【问题描述】:

我打算在我的 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?

任何帮助将不胜感激。

【问题讨论】:

    标签: lambda uibutton javafx-8 java-stream actionevent


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-28
      • 2018-11-12
      • 1970-01-01
      • 2019-09-28
      • 2015-02-02
      • 2016-10-17
      • 2018-10-06
      • 1970-01-01
      相关资源
      最近更新 更多