Dans le cadre des applicatifs RIA qui seront connectés au projet Res@Core je teste depuis peu Java FX au travers de NetBean 6.9.1. Les démos sont assez alléchantes et le fait de pouvoir réutiliser assez facilement les classes Java du projet (en comparaison de Flex ou de WPF) me conduise à tenter l'aventure. Après quelques tests dans une fenêtre classique je décide de passer à quelque chose de plus beau et essaye de faire aussi bien qu'avec les concurrents : une fenêtre à bords transparent que l'on peut déplacer sur l'écran. La prochaine étape sera de redimensionner cette magnifique fenêtre.
Étape 1 : rendre les bords de la fenêtre transparents
La FAQ JavaFX de Developpez.com donne la solution (au milieu de pas mal d'autres astuces) que l'on retrouve également dans la documentation en ligne. NetBean n'affiche pas toutes les propriétés des noeuds et il faut parfois modifier ces dernières directement dans le code à l'aide de l'attribut StageStyle de l'objet stage qui peut prendre trois valeurs différentes :
- DECORED : la fenêtre a des bords, des boutons maximiser, minimiser et fermer.
- UNDECORED : la fenêtre a des bords et uniquement un bouton fermer.
- TRANSPARENT : les bords disparissent et il n'y a pas de bouton.
Je vous laisserais essayer avec l'exemple ci dessous ou la scène contient deux nœuds un panel et un rectangle noir. En modifiant la propriété ci dessus on obtient la fenêtre désirée. Notre application est donc à bords transparents. Passons à la seconde étape.
Étape 2 : Drag & Drop de la fenêtre transparente sur la totalité de l'écran
Nous allons utiliser le rectangle (tout autre nœud ferait l'affaire en fait) pour déclencher le drag & drop. Pour cela nous utilisons deux évènements liés au rectangle : OnMousePressed lorsqu'on laisse le bouton de la souris enclenché sur le rectangle, puis ensuite OnMouseDragged lorsque l'on bouge la souris.
Les deux variables
stageDragInitialX et
stageDragInitialY stocke la position initiale de la souris grâce aux propriétés
screenX et
screenY de l'évènement capturé. Le mouvement de la souris recalcule automatiquement les coordonnées de l'objet stage et le déplace en conséquence. Nous avons donc une fenêtre à bord transparents que l'on peut Drag&Dropper n'importe où dans l'écran.
Aucun commentaire:
Enregistrer un commentaire