Grenzen zu GridPane JavaFX hinzufügen

Ich erstelle ein Brettspiel in JavaFX mit GridPane.

Es gibt 7 verschiedene Animationen, die in jedes Gitter (Zelle) des Gitters eingefügt werden können.

m Anfang sieht das Gitter so aus

Ich habe getestet, wie ich einen einfachen Kreis hinzugefügt habe, bevor ich meine Animationseinfügungen programmiert habe. Und es sieht so aus

Die hinzugefügten Knoten sind SubScenes, die eine TimeLine-Animation enthalten. Jede Zellengröße beträgt 40x40 und die SubScene-Größe beträgt ebenfalls 40x40.

Die hinzugefügten Subscenes werden über die Rahmenlinien des Rasterfelds verschoben, und es sieht nicht gut aus.

Was kann ich tun, damit die Knoten unterhalb der Rasterlinien hinzugefügt werden? d.h. die Gitterlinien befinden sich über den Knoten.

Wenn es mit GridPane nicht möglich ist, kann ich sonst noch etwas verwenden?

Klasse die ich für das Spiel ausführe

class Game {
    static GridPane grid;
    public void start(final Stage stage) throws Exception {
        int rows = 5;
        int columns = 5;

        stage.setTitle("Enjoy your game");
        grid = new GridPane();
        for(int i = 0; i < columns; i++) {
            ColumnConstraints column = new ColumnConstraints(40);
            grid.getColumnConstraints().add(column);
        }

        for(int i = 0; i < rows; i++) {
            RowConstraints row = new RowConstraints(40);
            grid.getRowConstraints().add(row);
        }

        grid.setOnMouseReleased(new EventHandler<MouseEvent> () {
            public void handle(MouseEvent me) {
                grid.add(Anims.getAnim(1), (int)((me.getSceneX() - (me.getSceneX() % 40)) / 40), (int)((me.getSceneY() - (me.getSceneY() % 40)) / 40)); //here the getAnim argument could be between 1-7
            }
        });

        grid.setStyle("-fx-background-color: white; -fx-grid-lines-visible: true");
        Scene scene = new Scene(grid, (columns * 40) + 100, (rows * 40) + 100, Color.WHITE);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(final String[] arguments) {
        Application.launch(arguments);
    }
}

Klasse, die Animationen enthält, hier erstelle ich nur einen Kreis

public class Anims {

    public static SubScene getAnim(final int number) throws Exception {
        Circle circle = new Circle(20, 20f, 7);
        circle.setFill(Color.RED);
        Group group = new Group();
        group.getChildren().add(circle);
        SubScene scene = new SubScene(group, 40, 40);
        scene.setFill(Color.WHITE);
        return scene;
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage