IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
logo

FAQ JavaFXConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 507, derni�re mise � jour : 2 novembre 2016  Ajouter une question

 

Cette FAQ a �t� r�alis�e � partir des questions fr�quemment pos�es sur le forum JavaFX de http://java.developpez.com ainsi que l'exp�rience personnelle des auteurs.

Nous tenons � souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne pr�tend pas non plus �tre compl�te. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant r�dacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.

SommaireSceneGraphN�uds�v�nements (9)
pr�c�dent sommaire suivant
 

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<KeyEvent> :

  • onKeyPressed - ce callback est appel� quand une touche est enfonc�e. Il permet de manipuler le code de la touche ;
  • onKeyReleased - ce callback est appel� quand une touche est rel�ch�e. Il permet de manipuler le code de la touche ;
  • onKeyTyped - ce callback est appel� quand une touche a �t� saisie. Il permet de connaitre le caract�re qui a �t� saisi.


Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Rectangle rectangle = new Rectangle(100, 100, 150, 100); 
        rectangle.setFill(Color.RED); 
        rectangle.setFocusTraversable(true); 
        rectangle.setOnKeyPressed(keyEvent -> System.out.printf("Touche enfonc�e : %s %s", keyEvent.getCode(), keyEvent.getCharacter()).println()); 
        rectangle.setOnKeyTyped(keyEvent -> System.out.printf("Touche saisie : %s %s", keyEvent.getCode(), keyEvent.getCharacter()).println()); 
        rectangle.setOnKeyReleased(keyEvent -> System.out.printf("Touche rel�ch�e : %s %s", keyEvent.getCode(), keyEvent.getCharacter()).println()); 
        final Pane root = new Pane(); 
        root.getChildren().setAll(rectangle); 
        final Scene scene = new Scene(root, 600, 600); 
        primaryStage.setTitle("Test sur les �v�nements clavier"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Tout d'abord, il faut savoir que pour pouvoir recevoir des �v�nements clavier, notre n�ud doit pouvoir obtenir le focus. Nous devons donc commencer par mettre sa propri�t� focusTransversable � la valeur true. C'est �galement le cas pour toute autre forme g�om�trique ou tout n�ud basique. Les contr�les sont quant � eux d�j� pr�vus pour �tre utilisables au clavier et donc peuvent recevoir directement ces �v�nements.

Lan�ons notre programme et appuyons sur la touche S du clavier. La console va afficher la sortie suivante :

Code texte : S�lectionner tout
1
2
3
Touche enfonc�e : S  
Touche saisie : UNDEFINED s 
Touche rel�ch�e : S

  • la premi�re ligne a �t� produite par le callback onKeyPressed : l��v�nement contient un code, mais pas de caract�re ;
  • La seconde ligne a �t� produite par le callback onKeyTyped : l��v�nement contient un caract�re, mais son code n'est pas d�fini ;
  • La derni�re ligne a �t� produite par le callback onKeyReleased : l��v�nement contient un code, mais pas de caract�re.

Mis � jour le 5 septembre 2014 bouye

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<MouseEvent> :

  • onMouseClicked - ce callback est appel� si un clic de souris a eu lieu alors qu'elle se trouvait sur la surface du n�ud ;
  • onMouseDragged - ce callback est appel� si la souris est cliqu�e-tir�e sur la surface du n�ud (et au-del� s'il se poursuit). Il peut servir �galement � initialiser les �v�nements de drag'n drop ;
  • onMouseEntered - ce callback est appel� si la souris est entr�e sur la surface du n�ud ;
  • onMouseExited - ce callback est appel� si la souris est sortie de la surface du n�ud ;
  • onMouseMoved - ce callback est appel� si la souris est d�plac�e sur la surface du n�ud ;
  • onMousePressed - ce callback est appel� si un bouton de la souris est enfonc� alors qu'elle se trouvait sur la surface du n�ud ;
  • onMouseReleased - ce callback est appel� si un bouton de la souris est rel�ch� alors qu'elle se trouvait sur la surface du n�ud.


Par exemple :

Code Java : S�lectionner tout
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
public class NodeMouseEvent extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Rectangle rectangle = new Rectangle(100, 100, 150, 100); 
        rectangle.setFill(Color.RED); 
        rectangle.setOnMouseClicked(mouseEvent -> System.out.printf("Bouton %s cliqu� sur le n�ud, %d click(s) %f x %f.", mouseEvent.getButton(), mouseEvent.getClickCount(), mouseEvent.getX(), mouseEvent.getY()).println()); 
        rectangle.setOnMouseDragged(mouseEvent -> System.out.printf("La souris effectue un cliquer-tirer sur le n�ud %f x %f.", mouseEvent.getX(), mouseEvent.getY()).println()); 
        rectangle.setOnMouseEntered(mouseEvent -> System.out.printf("La souris entre sur le n�ud %f x %f.", mouseEvent.getX(), mouseEvent.getY()).println()); 
        rectangle.setOnMouseExited(mouseEvent -> System.out.printf("La souris sort du n�ud %f x %f.", mouseEvent.getX(), mouseEvent.getY()).println()); 
        rectangle.setOnMouseMoved(mouseEvent -> System.out.printf("La souris se d�place sur le n�ud %f x %f.", mouseEvent.getX(), mouseEvent.getY()).println()); 
        rectangle.setOnMousePressed(mouseEvent -> System.out.printf("Bouton %s press� sur le n�ud %f x %f.", mouseEvent.getButton(), mouseEvent.getX(), mouseEvent.getY()).println()); 
        rectangle.setOnMouseReleased(mouseEvent -> System.out.printf("Bouton %s rel�ch� sur le n�ud %f x %f.", mouseEvent.getButton(), mouseEvent.getX(), mouseEvent.getY()).println()); 
        final Pane root = new Pane(); 
        root.getChildren().setAll(rectangle); 
        final Scene scene = new Scene(root, 600, 600); 
        primaryStage.setTitle("Test sur les �v�nements souris"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Contrairement � la gestion des �v�nements clavier, nous n'avons pas besoin ici de modifier la propri�t� focusTransversable ; ce code fonctionne imm�diatement.

Il existe �galement une gestion des �v�nements de drag'n drop (DnD) qui permettent de faire transiter des valeurs, informations, n�uds ou contr�les vers et depuis le presse-papier, y compris vers le syst�me natif. Cette gestion s'initialise en g�n�ral via le callback onMouseDragged et utilise des callbacks suppl�mentaires � base de MouseDragEvent � positionner sur la source et la cible du DnD.

La gestion du d�filement avec la roulette de la souris est d�sormais prise en charge par les �v�nements de d�filement tactiles.

Mis � jour le 5 septembre 2014 bouye

Par d�faut, les �v�nements de souris tels que les clics ou les d�placements du curseur ne peuvent pas traverser des n�uds qui se trouvent �tre superpos�s les uns aux les autres. Le noeud situ� au sommet de la pile d'affichage intercepte tous les �v�nements. Seules les zones qui ne sont pas consid�r�es comme faisant partie d'un n�ud laissent passer les �v�nements vers les n�uds situ�s en dessous.

Il est possible de modifier ce comportement en changeant la valeur de la propri�t� mouseTransparent :

  • true - le n�ud (ainsi que tous les sous-n�uds qu'il contient) ne r�agit plus aux �v�nements souris. Tous les �v�nements sont propag�s aux n�uds qui se trouvent affich�s sous lui sans �tre bloqu�s.
  • false - le n�ud r�agit � tous les �v�nements souris. S'il s'agit d'un groupe, d'un gestionnaire de mise en page, d'un contr�le ou d'une skin, les �v�nements souris seront transmis � ses n�uds enfants. Les autres n�uds qui se trouvent affich�s sous lui seront occult�s et ne recevront pas les �v�nements d�clench�s � l�int�rieur du n�ud.


La propri�t� mouseTransparent a pour valeur par d�faut la valeur false.

Mis � jour le 27 janvier 2009 bouye

Depuis JavaFX 2.x, les �v�nements de d�filement avec la roulette de la souris ont �t� unifi�s avec la gestion des �v�nements de d�filement tactile. Vous devez donc utiliser les �v�nements tactiles m�me si vous ne disposez pas d'interface de saisie tactile.

Mis � jour le 2 octobre 2014 bouye

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<ScrollEvent> :

  • onScrollStarted - le d�filement a commenc� ;
  • onScroll - le d�filement est en cours ;
  • onScrollFinished - le d�filement est termin�.


L'objet de type ScrollEvent re�u en param�tre du callback dispose de m�thodes permettant de connaitre l'axe, la direction et l�intensit� du d�filement de m�me que le nombre de lignes de texte �quivalent au d�filement en pixels.

Mis � jour le 2 octobre 2014 bouye

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<ZoomEvent> :

  • onZoomStarted - le zoom a commenc� ;
  • onZoom - le zoom est en cours ;
  • onZoomFinished - le zoom est termin�.


L'objet de type ZoomEvent re�u en param�tre du callback dispose de m�thodes permettant de connaitre la position (en 3 dimensions) ainsi que le facteur de zoom.

Mis � jour le 2 octobre 2014 bouye

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<RotateEvent> :

  • onRotationStarted - la rotation a commenc� ;
  • onRotate - la rotation est en cours ;
  • onRotationFinished - la rotation est termin�e.


L'objet de type RotateEvent re�u en param�tre du callback dispose de m�thodes permettant de connaitre la position (en 3 dimensions) ainsi que l'angle de rotation.

Mis � jour le 2 octobre 2014 bouye

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<SwipeEvent> :

  • onSwipeDown - un balayage vers le bas a eu lieu ;
  • onSwipeLeft - un balayage vers la gauche a eu lieu ;
  • onSwipeRight - un balayage vers la droite a eu lieu ;
  • onSwipeUp - un balayage vers le haut a eu lieu.


L'objet de type SwipeEvent re�u en param�tre du callback dispose de m�thodes permettant de connaitre la position (en 3 dimensions).

Mis � jour le 2 octobre 2014 bouye

Vous devez modifier la valeur de l'un des callbacks suivants de la classe javax.scene.Node en sp�cifiant un objet de type EventHandler<TouchEvent> :

  • onTouchMoved - la s�lection tactile est d�plac�e ;
  • onTouchPressed - la s�lection tactile a commenc� ;
  • onTouchReleased - la s�lection tactile a pris fin ;
  • onTouchStationary - la s�lection tactile reste stationnaire.


L'objet de type TouchEvent re�u en param�tre du callback dispose de m�thodes permettant de connaitre la position (en 3 dimensions) ainsi que la liste des points tactiles activ�s.

Mis � jour le 2 octobre 2014 bouye

Proposer une nouvelle r�ponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �a


R�ponse � la question

Liens sous la question
pr�c�dent sommaire suivant
 

Les sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.