我尝试将按钮添加到Hbox中我想在单击按钮时抓取索引 这就是我所做的。
HBox gp = new HBox(10);
gp.setPadding(new Insets(3));
for (int i = 0; i < 20; i++) {
JFXButton jb = new JFXButton("Number " + i);
jb.setStyle("-fx-background-color: rgb(230, 126, 34)");
jb.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("index no?");
}
});
jb.setMinWidth(100);
jb.setMinHeight(50);
gp.getChildren().add(jb);
}
gp.prefWidthProperty().bind(topscroll.widthProperty());
topscroll.setContent(gp);
gp.prefWidthProperty().bind(topscroll.widthProperty());
topscroll.setContent(gp);
任何有关实现这一目标的建议?
答案 0 :(得分:3)
您可以将索引复制到最终变量中:
for (int i = 0; i < 20; i++) {
JFXButton jb = new JFXButton("Number " + i);
jb.setStyle("-fx-background-color: rgb(230, 126, 34)");
int index = i ;
jb.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("index no: " + index);
}
});
jb.setMinWidth(100);
jb.setMinHeight(50);
gp.getChildren().add(jb);
}
请注意,您可以直接获取按钮(如果您需要的话),而无需创建另一个变量:
for (int i = 0; i < 20; i++) {
JFXButton jb = new JFXButton("Number " + i);
jb.setStyle("-fx-background-color: rgb(230, 126, 34)");
jb.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Click on "+jb.getText());
}
});
jb.setMinWidth(100);
jb.setMinHeight(50);
gp.getChildren().add(jb);
}