Javafx 2 cliquer et double-cliquez
Je voudrais savoir si il était possible de détecter le double-clic dans JavaFX 2 ? et comment ?
Je voudrais faire événement différent entre un clic et double clic.
Grâce
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez détecter simple, double voire plusieurs clics:
MouseButton.PRIMARY
est utilisé pour déterminer si la gauche (couramment) bouton de la souris est déclenché l'événement. Lire l'api degetClickCount()
de conclure qu'il existe peut-être plusieurs cliquez sur compte d'autres de simple ou double. Cependant j'ai du mal à distinguer entre simple et double cliquez sur événements. Parce que le premier clic de compter le double-clic permet de lever un seul événement.fx:id="buttonA"
. Dans mon contrôleur, je l'appellebuttonA.setOnMouseClicked(...
equals
? Je pense == fonctionne très bienMouseButton
est un enum, ils sont équivalents. Voir aussi cette question.Voici un autre morceau de code qui peut être utilisé si vous avez à faire la distinction entre un simple et un double-clic et ont à prendre une action spécifique dans les deux cas.
La réponse par P. Pandey est l'approche la plus simple qui fait la distinction entre simple et double cliquez sur, mais il ne fonctionne pas pour moi. Pour un, la fonction "currentTimeMillis" renvoie déjà millisecondes, donc en divisant par 1000 ne semble pas être nécessaire. La version ci-dessous a travaillé pour moi dans une approche plus cohérente de la mode.
Voici comment j'ai mis en œuvre double-cliquez sur
}
if( diff>0 && (diff/1000)<=215)
Adhérant à Java SE 8 les expressions lambda devrait ressembler à quelque chose comme ceci:
Une fois que vous vous habituez à les expressions lambda - ils finissent par être plus compréhensible que l'original de l'instanciation de classe et en remplaçant (x) de la méthode. -À mon avis-
Puisqu'il n'est pas possible de faire la distinction entre un simple clic et double-cliquez sur par défaut, nous utilisons l'approche suivante:
Un seul clic, nous envelopper le simple clic de fonctionnement dans un abortable praticable. Cet exécutable attend un certain laps de temps (c'est à dire,
SINGLE_CLICK_DELAY
) avant d'être exécuté.En attendant, si vous cliquez une deuxième fois, c'est à dire, un double-clic, se produit, le seul-cliquez sur l'opération obtient abandonnée et seule la double-cliquez sur l'opération est effectuée.
De cette façon, le simple clic ou le double-clic est effectué, mais jamais les deux.
Voici le code complet. Pour l'utiliser, seuls les trois
TODO
lignes doivent être remplacés par les gestionnaires.