Bonjour,
Je souhaite afficher une zone de texte à l'écran lorsque la souris survol un noeud graphique.
J'ai donc utilisé des MouseEvent pour cela (setOnMouseEntered, setOnMouseMoved, setOnMouseExited), cela fonctionne correctement.
Je souhaite maintenant que cette zone de texte n'apparaisse que lorsque l'utilisateur laisse son curseur au moins 2 secondes au dessus du noeud graphique.
C'est là que je bloque.
Je m'y prends peut être mal, mais j'ai testé des choses avec notamment des timers, ... , malheureusement sans succès.
Vos idées sont les bienvenues...
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 // La classe RecatorIcon permet d'importer un noeud graphique dans le contenu de la fenêtre. ReactorIcon icn = new ReactorIcon(); left_pane.getChildren().add(icn); // Création d'une zone de texte affichant des informations lorsque le noeud graphique est sélectionné icn.setOnMouseEntered(new EventHandler<MouseEvent>(){ public void handle(MouseEvent mouseEvent){ reactorTypeLabel.setVisible(true); reactorTypeLabel.setText(icn.getreactorType()+"\n"+icn.getreactorDescription()); getChildren().add(reactorTypeLabel); } }); // Permet de déplacer la zone de texte lorsque l'utilisateur déplace la souris icn.setOnMouseMoved(new EventHandler<MouseEvent>(){ public void handle(MouseEvent mouseEvent){ setCursor(Cursor.HAND); reactorTypeLabel.setTranslateX(mouseEvent.getSceneX()+15); reactorTypeLabel.setTranslateY(mouseEvent.getSceneY()+15); } }); // suppression de la zone de texte lorsque la souris quitte le noeud graphique icn.setOnMouseExited(new EventHandler<MouseEvent>(){ public void handle(MouseEvent mouseEvent){ setCursor(Cursor.DEFAULT); reactorTypeLabel.setVisible(false); getChildren().remove(reactorTypeLabel); } });
Partager