Bonjour,
j'essaye en JavaFX de réaliser un Panel déplaçable. Je suis presque arrivé à mes fins, seul un problème persiste.
En fait, j'ai fais en sorte que lorsque je déplace mon Panel, si sa position gauche (x) est inférieure à 0, j'annuler le déplacement. Ceci permet de de pas déborder de la Frame.
Ceci fonctionne pour la gauche et le haut de la Frame, mais pour la droite et le bas, il me faut récupérer les atrtibuts width et height de la Frame, mais je n'y parviens pas.
En espérant que quelqu'un aura compris mon problème, car ce n'est pas facile à expliquer...
Voici le code complet :
Merci d'avance
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 package javafxapplication1; import javafx.application.*; import javafx.scene.*; import javafx.scene.geometry.*; import javafx.scene.paint.*; import javafx.input.*; import javafx.animation.*; import javafx.scene.transform.Translate; import java.lang.Math; // Class to create a draggable group of objects public class Panel extends CustomNode{ private attribute endX = 0.0; private attribute endY = 0.0; private attribute startX = 0.0; private attribute startY = 0.0; private attribute enteteRectWidth = 300; private attribute enteteRectHieght = 30; public function create(): Node { return Group{ transform: bind Translate.translate(endX, endY); //translateX: bind endX //translateY: bind endY content: [ Rectangle { x: 0; y: 0; width: enteteRectWidth; height: enteteRectHieght; fill: Color.BLACK onMousePressed: function(e:MouseEvent):Void { startX = e.getDragX()-endX; startY = e.getDragY()-endY; } onMouseDragged: function(e:MouseEvent):Void { var tempEndX = e.getDragX()-startX; //var maxEndX = frameWidth;// - enteteRectWidth; if (tempEndX>=0 and tempEndX<=e.getStageX()) { endX = tempEndX; } var tempEndY = e.getDragY()-startY; if (tempEndY>=0 and tempEndY<=e.getStageY()) { endY = tempEndY; } } }, Rectangle { x: 0; y: 30; width: 300; height: 150; fill: Color.GRAY } ] } } } var frameWidth = 1024; var frameHeight = 768; Frame { width: frameWidth height: frameHeight visible: true stage: Stage { //fill: Color.BLACK content: [ Panel{} ] } closeAction: function() { java.lang.System.exit( 0 ); } }![]()
Partager