如何在Hbox中获取节点索引

时间:2018-01-01 13:51:09

标签: javafx

我尝试将按钮添加到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);

任何有关实现这一目标的建议?

1 个答案:

答案 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);
}