Javafx:如何在TilePane中填充圆圈,并在每个圆圈中添加事件处理程序

Javafx:如何在TilePane中填充圆圈,并在每个圆圈中添加事件处理程序,java,events,geometry,tile,Java,Events,Geometry,Tile,我尝试使用此代码,但它不起作用: public class Scacchiera extends Application { TilePane root; @Override public void start(Stage primaryStage) { root = new TilePane(); root.setPrefColumns(4); root.setPrefRows(4); for (int

我尝试使用此代码,但它不起作用:

public class Scacchiera extends Application {

    TilePane root;

    @Override
    public void start(Stage primaryStage) {
        root = new TilePane();
        root.setPrefColumns(4);
        root.setPrefRows(4);
        for (int i = 0; i < 16; i++) {
            Circle c = new Circle(i);
            c.addEventHandler(ActionEvent.ACTION, new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Circle clicked");
                }
            });
            root.getChildren().add(c);
        }

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}
公共类Scacchiera扩展应用程序{
替利泮根;
@凌驾
公共无效开始(阶段primaryStage){
root=新的TilePane();
root.setpref列(4);
root.setPrefRows(4);
对于(int i=0;i<16;i++){
圆圈c=新圆圈(i);
c、 addEventHandler(ActionEvent.ACTION,新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
System.out.println(“单击圆圈”);
}
});
root.getChildren().add(c);
}
场景=新场景(根,300,250);
setTitle(“你好,世界!”);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}

为什么??你能帮助我吗?我不确定问题出在哪里,但可能是我的事件处理程序在
for
循环中死亡。

循环只是形状,它们没有控件之类的操作

您要做的是将事件处理到您的圈子中:

// java 8
circle.setOnMouseClicked(mouseEvent -> System.out.println("Mouse Clicked!"));

若我想改变颜色或者圆的半径呢?那个么改变它们;填充和半径似乎与原始问题无关。