JavaFX中的对象数组
我应该创建一个类型为JavaFX中的对象数组,java,arrays,javafx,Java,Arrays,Javafx,我应该创建一个类型为Buttons的对象数组,但输出只是一个按钮,而不是应该的多个按钮。我该怎么办 int numberOfButtons = 20; for (int i = 0; i < numberOfButtons; ++i) { Button[] btn = new Button[numberOfButtons]; btn[i] = new Button(); btn[i].setText("Safe!"); btn[i].setOnA
Buttons
的对象数组,但输出只是一个按钮,而不是应该的多个按钮。我该怎么办
int numberOfButtons = 20;
for (int i = 0; i < numberOfButtons; ++i) {
Button[] btn = new Button[numberOfButtons];
btn[i] = new Button();
btn[i].setText("Safe!");
btn[i].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
FlowPane root = new FlowPane();
root.getChildren().addAll(btn[i]);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Button Blast!");
primaryStage.setScene(scene);
primaryStage.show();
}
int numberOfButtons=20;
对于(int i=0;i
当你遇到这样的问题时,最好的办法是拿一张纸和一支笔,写下你想要的东西
代码的每一行都是这样
您的完整代码在循环中。您应该缩小范围,使中仅包含以下内容:
btn[i] = new Button();
btn[i].setText("Safe!");
btn[i].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
btn[i]=新建按钮();
btn[i].setText(“安全!”);
btn[i].setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
System.out.println(“你好,世界!”);
}
});
我使用JavaFx和Java8(流)来解决您的问题:
FlowPane fPane = IntStream.range(1, 20)
.mapToObj(value -> {
Button button = new Button("Safe!");
button.setOnAction(event -> {
System.out.println("Hello World!");
});
return button;
}).reduce(new FlowPane(), (p, b) -> {
p.getChildren().add(b);
return p;
}, (flowPane, flowPane2) -> flowPane2);
Scene scene = new Scene(fPane, 300, 250);
primaryStage.setTitle("Button Blast!");
primaryStage.setScene(scene);
primaryStage.show();
在创建
root
之前,您可能应该关闭for循环。您还应该在for循环之前移动按钮[]btn=new按钮[numberOfButtons]
。否则,您将在for循环中创建每个变量20次。好的,我这样做了。。。但是接下来的方法是root.getChildren().add(btn[i])代码>不再工作了。所以添加另一个for循环,比如:for(按钮b:btn){root.getChildren().add(b);}
。或者,您也可以在不使用for循环的情况下执行root.getChildren().addAll(btn)
。