la génération d'un MouseEvent en JavaFX
Je suis dans le besoin de simuler un MouseEvent.MOUSE_CLICKED
. Je veux utiliser le fireEvent méthode d'un particulier Nœud afin de distribuer un événement de ce genre. Cependant, j'ai du mal avec la génération de l'un. Il semble que javafx.de la scène.d'entrée.MouseEvent a pas de constructeur, mais le vieux java.awt.event.MouseEvent
les objets peuvent être instancié de cette façon. Pourtant, je n'ai pas trouvé de solution pour la conversion. Comment puis-je faire cela?
Grâce.
- vous pouvez simuler le clic de souris en utilisant
java.awt.Robot.mouse*
méthodes - droit, mais comment puis-je convertir
java.awt.event.MouseEvent
àjavafx.scene.input.MouseEvent
? La signature de la méthode qui gère l'événement réel nécessite la MouseEvent de javafx.* package - si vous utilisez un Robot de classe, il va simuler le clic de la souris, qui Java FX infrastructure de l'attraper et de créer toutes les classes requises par lui-même. Vous venez de dire qch comme
Robot.mousePress(10,10)
pour que.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez générer un MouseEvent à l'aide de l'obsolète MouseEvent.impl_mouseEvent API. Je l'ai fait précédemment dans ce fil de discussion du forum JavaFX 2.0. Notez que l'API est déconseillé pour une raison - il est privé de l'API utilisée dans la mise en œuvre de JavaFX et de l'API n'est pas garanti pour maintenir la même signature ou même existent dans de futures versions (qui peut être mise en évidence parce que le code que j'ai posté dans le fil de discussion du forum n'est plus compile.
La bonne solution pour générer un tel événement est d'avoir une API publique afin de soutenir cette. Il y a déjà eu une demande déposée à l'approvisionnement de cette fonctionnalité RT-9383 "Ajouter une bonne constructeurs & usine de méthodes à des classes d'événements, de supprimer impl". Cette jira est prévue pour l'année prochaine pour JavaFX 3.0.
Dans l'intervalle, l'utilisation de la classe de Robot de Sergey l'indique, est probablement votre meilleure méthode.
Mise à jour: Java 8 ajouté les constructeurs publics pour javafx.de l'événement.MouseEvent et l' (comme indiqué dans Jay Thakkar la réponse de), vous pouvez mettre le feu à un tel événement à l'aide de De l'événement.fireEvent (vous pouvez également le feu des événements sur Windows).
Cela déclenche un seul primaire clic de souris à votre nœud:
true
pour toutes les touches de modification (shiftDown
,controlDown
, etc.)? J'ai été dans l'hypothèse d'une plaine jane cliquez sur ne pas avoir l'un des modificateurs vers le bas.Ou vous pouvez utiliser un simple "hack" de faire un programmatique cliquez sur le bouton.
Créer cette méthode dans un "Util" classe:
Puis, "cliquer" sur le bouton, il suffit d'appeler la méthode sur en passant votre bouton en paramètre.
Lorsque vous définissez un gestionnaire, il définit une propriété publique. Vous pouvez obtenir de l'événement à partir de la propriété et de traitement des appels():