J'ai besoin de simuler un Merci. P> mouseevent.mouse_clicked code>. Je veux utiliser la méthode forte> Fireeevant forte> d'un nœud
java.awt.event.mouseevent code> Les objets peuvent être instanciés de cette façon. Néanmoins, je n'ai trouvé aucune solution de travail pour la conversion. Comment puis-je faire ce tour? P>
4 Réponses :
Vous pouvez générer un sourire de souris à base de souris à l'aide de l'API de MouseEvent.Impl_Mouseevent. Je l'ai déjà fait précédemment dans ce Fil du forum pour JavaFX 2.0. Notez que l'API est obsolète pour une raison - elle est une API privée utilisée dans la mise en œuvre de JavaFX et l'API n'est pas garantie de maintenir la même signature ou même exister dans les versions futures (qui peuvent être prouvées parce que le code d'origine que j'ai posté dans le Le fil du forum ne compile plus. P>
La solution correcte pour générer un tel événement est d'avoir une API publique afin de le soutenir. Il y a déjà eu une demande déposée à fournir cette fonctionnalité RT-9383 "Ajouter des constructeurs et usines appropriés Méthodes pour les classes d'événement, supprimer Implez ". Cette JIRA devait être achevée l'année prochaine pour JavaFX 3.0. P>
Entre-temps, l'utilisation de la classe de robots Comme Sergey suggère est probablement votre meilleure méthode. P>
mise à jour: em> java 8 ajouté constructeurs publics pour javafx.event.mouseevent et le (comme indiqué dans la réponse de Jay Thakkar), vous pouvez déclencher un tel événement en utilisant Event.Fireeevent (Vous pouvez aussi
Toute une réponse élaborée. Merci.
Jira Access travaille pour moi. Les nouveaux constructeurs d'événements ont été ajoutés au DIRECTION JAVA 8 à libérer l'année prochaine.
Cela déclenchera une seule souris principale Cliquez à votre noeud:
import javafx.event.Event; import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; Event.fireEvent(YOUR NODE, new MouseEvent(MouseEvent.MOUSE_CLICKED, 0, 0, 0, 0, MouseButton.PRIMARY, 1, true, true, true, true, true, true, true, true, true, true, null));
Forfaits pour référence: importer javafx.event.event; Importer javafx.scene.input.mouseButton; import javafx.scene.input.mouseevent;
Pourquoi passez-vous true code> pour toutes les touches de modification (
Changement code>,
contraire code>, etc.)? J'étais sous l'hypothèse qu'un clic de Jane simple n'aurait aucun des modificateurs.
ou vous pouvez utiliser un simple "hack" pour effectuer un clic programmatique sur le bouton.
Créez cette méthode dans une classe "UTIL": puis, pour "cliquer" sur le bouton, appelez simplement la méthode en transmettant votre bouton comme paramètre. P> P>
Lorsque vous définissez un gestionnaire, il établit une propriété publique. Vous pouvez obtenir l'événement à partir de cette propriété et de cette poignée d'appel ():
button1.setOnMouseClicked().... the corresponding property is button1.onMouseClickedProperty().get().handle(me);//where me is some MouseEvent object
Vous pouvez simuler la souris click à l'aide de
java.awt.robot.mouse * code> méthodes
droite, mais comment convertir
java.awt.event.mouseevent code> à
javafx.scene.input.mouseevent code>? La signature de méthode qui gère l'événement réel nécessite le MouseEveillant B> de JavaFX. * Paquet
Si vous utilisez une classe de robots, il simulera le clic de souris, quelle infrastructure Java FX attrapera et créera toutes les classes requises en soi. Vous dites juste smth comme
robot.mousepress (10,10) code> pour cela.