因为这是我在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
中获取此按钮。
答案 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事件。
我希望这个答案可以帮到你。