Attente conditionnelle en java - Java - Programmation
Marsh Posté le 23-12-2009 à 11:27:01
Bonjour,
Je dirais que ta facon de faire n'est pas bonne: Je crois qu'en fait il faut que lorsque tu as
- un keypressed(KeyEvent.VK_SPACE) tu lances un timer t de 3 secondes ET tu positionnes boutonTirEnfonce a vrai
- un keyreleased(KeyEvent.VK_SPACE), tu positionnes boutonTirEnfonce a faux
- event timer t , tu positionnes boutonTirEnfonce a faux
(Mais j'ai l'impression que ta boucle de traitement des messages de fenetres n'est pas correcte, au vu de ta question et de ta fonction fire)
Marsh Posté le 23-12-2009 à 13:25:24
Merci beaucoup, j'ai fait ce que tu m'as proposé mais j'ai encore un problème.
Je souhaite aussi pouvoir récupérer le temps t auquel l'utilisateur lache la barre espace (relativement au moment ou il a appuyé dessus, donc 0<t<3sec).
Pour cela il me faudrait une fonction de timer qui me renvoie le temps depuis le start(); mais cela n'existe pas je crois.
La fonction timer.getDelay(); me renvoie 3sec, ce n'est pas ce que je veux.
Il y a-t-il un moyen de contourner le problème ?
Encore merci
(Autrement tout marche trés bien)
Marsh Posté le 23-12-2009 à 17:38:43
Vois du coté de java.util.date.timestamp ( http://java.sun.com/j2se/1.4.2/doc [...] stamp.html )
en prenant une mesure lors de l'appui puis une autre lors du keyreleased/timer et en faisant la soustraction
Marsh Posté le 23-12-2009 à 17:45:28
breizhbugs a écrit : Vois du coté de java.util.date.timestamp ( http://java.sun.com/j2se/1.4.2/doc [...] stamp.html ) |
Non non, il s'agit d'un Timestamp SQL en Java, rien à voir avec la notion de TimeSpan en .NET.
Le plus simple est sans doute de récupérer System.currentTimeMillis() à 2 moments différents et de soustraire les valeurs.
Marsh Posté le 23-12-2009 à 17:55:40
cbeyls a écrit : |
Autant pour moi, j'avais lu trop vite! il s'agit de http://java.sun.com/j2se/1.4.2/doc [...] /Date.html mais effectivement vu la grandeur de temps mesuré, System.currentTimeMillis() est parfait
Marsh Posté le 23-12-2009 à 18:12:23
Avec la classe Date on ne peut pas faire de calculs de dates, à part comparer une date à une autre pour savoir si elle est antérieure ou postérieure.
Il n'y a pas encore d'équivalant à TimeSpan en Java, mais on peut faire des calculs basiques avec la classe Calendar.
Marsh Posté le 23-12-2009 à 23:15:53
Merci, la méthode de la soustraction avec Systel.currentTimeMillis() marche à merveille !
Marsh Posté le 23-12-2009 à 11:15:39
Bonjour tout le monde !
Voici mon problème :
Une fonction est déclenchée par le fait que l'utilisateur appuit sur la barre espace.
Je voudrais que mon programme attente
soit : jusqu'a ce que l'utilisateur la lache
soit : si cela fait pus de 3 seconde, que le programme continue, même si la barre espace est toujours enfoncée.
J'avais fait cela :
public void fire() {
while (boutonBarreEnfonce==true && tTir<3) {
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
e.printStackTrace();
}
tTir=tTir+0.1;
}
}
et
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) {
boutonTirEnfonce=false;
}
}
En fait java ne fait "qu'une chose à la fois" et ne vérifie pas les entrées de l'utilisateur tant qu'il n'en a pas fini avec la fonction contenant ma boucle while.
Peut-on lui dire de garder une oreille attentive aux entrés clavier en même temps ?
NB : Tous ce qui est question du KeyListener marche bien, le problème ne vient pas de là.
Un grand merci !