Bonjour à tous,

Je suis en train, du moins j'essaye, de réaliser un scrabble en Java et JavaFX.

Débutant en JavaFX, j'essaye de me débrouiller avec les tutos qu'on trouve sur le net.
Mais j'ai un peu de mal avec les événements de la souris, notamment le fais de déplacer un jeton du chevalet vers une case du plateau de jeu, en cliquant sur le jeton puis en cliquant sur la case du plateau où l'on veut mettre le jeton.

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
 
 
public class ScrabbleMain extends Application{
 
	private double largeurPlat = 800;
    private double longueurPlat = 800;
 
    private int ligne = 15;
    private int colonne = 15;
 
    double largeurCase = largeurPlat / ligne;
    double longueurrCase = longueurPlat / colonne;
 
    Case[][] playfield = new Case[ligne][colonne];
   Jeton[][] chevaletJeton = new Jeton[7][1];
 
 
	public static void main(String[] args) {
		Application.launch(ScrabbleMain.class, args);
	}
 
	@Override
	public void start(Stage primaryStage)
	{
		primaryStage.setTitle("Scrabble");
		StackPane root = new StackPane();
		Scene scenePrincipale = new Scene(root, 1200, 1000, Color.WHITE);	//Création de la scéne
 
 
		Group grille = new Group();
		 // initialize playfield
        for( int i=0; i < ligne; i++) {
            for( int j=0; j < colonne; j++) {
 
                // create node
            	Case node = new Case(i, j, largeurCase, longueurrCase);
 
                // add node to group
                grille.getChildren().add(node);
 
                // add to playfield for further reference using an array
                playfield[i][j] = node;
 
            }
        }
        grille.setTranslateX(-20);
        grille.setTranslateY(-80);
        root.getChildren().add(grille);
 
        Group chevalet = new Group();
        for( int i=0; i < 7; i++) {
 
            // create node
            Jeton node = new Jeton(i, 0, largeurCase, longueurrCase);
 
            // add node to group
            chevalet.getChildren().add(node);
 
            // add to playfield for further reference using an array
            chevaletJeton[i][0] = node;
 
        }
        chevalet.setTranslateX(-20);
        chevalet.setTranslateY(400);
        root.getChildren().add(chevalet);
 
 
 
 
		primaryStage.setScene(scenePrincipale);
		primaryStage.show();
	}
 
 
	public static class Case extends StackPane {
 
    	Rectangle rectangle = new Rectangle();
        public Case(int x, int y, double largeur, double longueur) {
 
            // create rectangle
            Rectangle rectangle = new Rectangle( largeur, longueur);
            rectangle.setStroke(Color.WHITE);
            rectangle.setFill(Color.SEAGREEN);
 
 
 
            // set position
            setTranslateX(x * largeur);
            setTranslateY(y * longueur);
 
            getChildren().addAll(rectangle);
 
        }        
 
	}
 
	public static class Jeton extends StackPane {
 
    	Rectangle rectangle = new Rectangle();
        public Jeton(int x, int y, double largeur, double longueur) {
 
            // create rectangle
            Rectangle rectangle = new Rectangle( largeur, longueur);
            rectangle.setStroke(Color.WHITE);
            rectangle.setFill(Color.SEAGREEN);
 
 
 
            // set position
            setTranslateX(x * largeur);
            setTranslateY(y * longueur);
 
            this.setOnMouseEntered(new EventHandler<MouseEvent>(){
                public void handle(MouseEvent me){
                	rectangle.setFill(Color.LIGHTGREY);
                }
            });
            this.setOnMouseExited(new EventHandler<MouseEvent>(){
                public void handle(MouseEvent me){
                	rectangle.setFill(Color.SEAGREEN);
                }
            });
            this.setOnMousePressed(new EventHandler<MouseEvent>(){
                public void handle(MouseEvent me){
                    appuyer(x, y);
                }
            });
            this.setOnMouseReleased(new EventHandler<MouseEvent>(){
                public void handle(MouseEvent me){
                    relacher(y);
                }
            });
 
            getChildren().addAll(rectangle);
 
        }
 
        public void appuyer(int positionX, int positionY){
            rectangle.setFill(Color.DARKGREY);
            System.out.println(positionX+"/"+positionY);
        }
 
        public void relacher(int positionY){
        	rectangle.setFill(Color.WHITE);
        }
 
 
	}
}


Bien cordialement