如何以简单的方式为按钮循环?

时间:2016-08-29 21:54:39

标签: javafx

因为这是我在javafx中的第一个应用程序,并试图制作一个简单的计算器。我想知道如何以简单的方式为循环做这个:

for(int i=1; i<10; i++){
    Button bt1 = new Button();       
    bt1.setText("1");    
    bt1.setOnAction(new EventHandler<ActionEvent>() {
        @Override 
        public void handle(ActionEvent event) {
            System.out.println("1");
        }
    });
    i 1;
}

如何在VBox中获取此按钮。

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码实现它。

        VBox vbox = new VBox();   //create new VBox instance
        vbox.setMinWidth(500);    //set minimum width, dont think you'd need this. 

        for(int i=1; i<10; i++){
            Button btn = new Button();   
            btn.setMinWidth(200);
            btn.setMinHeight(50);
            btn.setText("Button" + i);    
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override 
                public void handle(ActionEvent event) {
                    System.out.println(btn.getText()); //Or "1" as in your code
                }
            });
            vbox.getChildren().add(btn); //add button to your VBox
        }

        root.getChildren().add(vbox); //root of your pane
        primaryStage.setScene(scene); //primaryStage is your stage, scene is the current scene
        primaryStage.show();

修改

阅读有关性能问题的问题中的评论,这不会解决任何问题。我基本上编写了你上面使用的相同代码,并添加了VBox创建并添加了Button,因为从这个问题来看,你需要帮助创建VBox并添加Buttons。

答案 1 :(得分:0)

我不知道为什么需要花很多时间才能做到这一点 但正如珠宝所说的那样应该非常快,我在javafx工作9个月以来在一台性能不高的电脑上工作,据我所知,在计算器中你会有10个按钮数字从0到9,我这样编码:

VBox vboxForButtons = new VBox();
for(int i=0; i<10; i++){
    Button btnNumber = new Button();
    btnNumber.setText(String.valueOf(i));
    btnNumber.setOnAction((ActionEvent)->{
        System.out.println(btnNumber.getText());
    });
    vboxForButtons.getChildren().add(btnNumber);
}

除此之外,对于小型和轻微的应用程序,我建议您使用SceneBuilder工具将您在窗口中拖动的对象直接链接到代码中的FXML事件。

我希望这个答案可以帮到你。