Bonjour, j'ai bien de la misère avec cette méthode. Je tente de sauvegarder dans la position de départ lorsque je clique sur une pièces dans un jeu d'échec. Il y a 3 Event dans cette méthode: node.setOnMousePressed ; node.setOnMouseDragged ; node.setOnMouseReleased. Mon but est de déplacer la pièce si la case est valide, sinon la remettre à sa position de départ.

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
private void enableDragging(Node node) {
		final ObjectProperty<Point2D> mouseAnchor = new SimpleObjectProperty<>();
		final ObjectProperty<Point2D> mouseDown = new SimpleObjectProperty<>();
		// Lorsque la pi�ce est saisie, on pr�serve la position de d�part
		node.setOnMousePressed(event -> {
 
			mouseAnchor.set(new Point2D(event.getSceneX(), event.getSceneY()));
			mouseDown.set(new Point2D(event.getSceneX(), event.getSceneY()));
 
		});
 
		// � chaque �v�nement de d�placement, on d�place la pi�ce et on met �
		// jour la position de d�part
		node.setOnMouseDragged(event -> {
			double deltaX = event.getSceneX() - mouseAnchor.get().getX();
			double deltaY = event.getSceneY() - mouseAnchor.get().getY();
			node.relocate(node.getLayoutX() + deltaX, node.getLayoutY() + deltaY);
			node.toFront();
			mouseAnchor.set(new Point2D(event.getSceneX(), event.getSceneY()));
 
		});
 
		// Lorsqu'on rel�che la pi�ce, le mouvement correspondant est appliqu�
		// au jeu d'�checs si possible.
		// L'image de la pi�ce est �galement centr�e sur la case la plus proche.
		node.setOnMouseReleased(event -> {
 
			Point2D to = new Point2D (event.getSceneX(), event.getSceneY());
			Point2D from = mouseDown.get();
			if(board.move(from, to)) {
				node.relocate(to.getX(), to.getY());
			}else {
				node.relocate(from.getX(), from.getY());
			}
 
 
		});
 
	}