如何在 Hbox 中获取节点索引



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

有什么建议可以实现这一目标吗?

您可以将索引复制到最终变量中:

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

最新更新