Ajout d'un cadre à GridPane JavaFX

Je suis entrain de créer un jeu de plateau en JavaFX à l'aide de GridPane.

Il y a 7 différentes animations qui pourrait être placé dans chaque grille (cellule) de la grille.

D'abord la grille ressemble à ceci

Ajout d'un cadre à GridPane JavaFX

J'ai testé l'ajout d'un simple cercle à l'avant de la programmation de mon animation des insertions. Et il semble que ce

Ajout d'un cadre à GridPane JavaFX

Ajout d'un cadre à GridPane JavaFX

Les nœuds ajoutés sont SubScenes qui comprennent la Chronologie de l'animation. Chaque cellule est de taille 40x40 et la SubScene taille est également 40x40.

La subscenes lorsqu'il est ajouté, obtenir sur le dessus de la gridpane frontières et il n'a pas l'air bon.

Ce que je peux faire en sorte que les nœuds sont ajoutés ci-dessous les lignes de la grille? c'est à dire les lignes du quadrillage sont au-dessus des nœuds.

Si il n'est pas possible avec GridPane, est-il autre chose que je peux utiliser?

classe, que j'exécute pour le jeu

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

classe qui contient des animations, ici, je suis juste de créer un cercle

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;
}
}
  • Votre question est impossible de répondre sans code: comment sommes-nous censés savoir ce que vous faites qui crée cet effet, sans voir comment vous l'avez mise en place? Créer un un minimum de reproductibles exemple qui montre le même comportement et de modifier une question à l'inclure.
  • espérons que cette aide
  • Il serait plus facile si vous avez posté une un minimum de reproductibles exemple, mais il y a assez de place pour voir ce qui ne va pas.
  • Cette question est similaire (peut-être un doublon?) Comment faire pour créer une grille d'arrière-plan.
  • À l'aide de sous-scènes, c'est un très remis solution pour ce faire, généralement sous scènes sont pour le mélange 2D/3D des scènes avec différents angles de caméra et d'éclairage (ce qui ne semble pas être ce que vous faites ici), vous pouvez probablement se débarrasser de la SubScenes de mise en place et la juste utilisation régulière contenant les nœuds tels que les Groupes de Volet sous-classes.
  • remplacement de SubScenes avec Volets a bien fonctionné, merci

InformationsquelleAutor Jeet Parekh | 2015-10-01