Gestion clavier dans Java

Fermé
Simon R. Messages postés 24 Date d'inscription samedi 10 décembre 2011 Statut Membre Dernière intervention 10 mai 2013 - 5 juil. 2012 à 18:37
Simon R. Messages postés 24 Date d'inscription samedi 10 décembre 2011 Statut Membre Dernière intervention 10 mai 2013 - 6 juil. 2012 à 17:51
Bonjour,

Je cherche, en java, à créer une boucle while qui s'arrête lorsque l'utilisateur appuie sur la touche espace ou enter. En pseudocode, ça donnerait ceci:

while (espace/enter non appuyée) {
//Faire rouler le programme
}

Y a-t-il un moyen sans avoir à utiliser de ActionPerformed ni autre méthode spéciale?

Merci de vos réponses!

A voir également:

1 réponse

KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
5 juil. 2012 à 18:43
Et pendant ce temps là, il fait quoi ton programme ?
Est-ce que tu fais d'autres entrées clavier ? Est-ce que ton programme attends juste cet évènement ? Ou est-ce qu'il y a d'autres calculs en parallèle ?

La réponse sera différente selon ce que tu veux faire...
0
Simon R. Messages postés 24 Date d'inscription samedi 10 décembre 2011 Statut Membre Dernière intervention 10 mai 2013
5 juil. 2012 à 20:25
Tout les calculs se font dans le while et je n'ai aucune autre entrée clavier que celle-ci (pour faire un très très bref résumé).
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
5 juil. 2012 à 20:44
Tu peux utiliser un Thread qui va attendre le clavier en parallèle de ton calcul :

public class Attente
{
    private boolean b;
    
    public Attente()
    {
    	b = false;
    	
    	new Thread()
    	{
    		public void run()
    		{
    			b = true;
    			try { System.in.read(); } catch (Exception e) {}
    			b = false;
    		}
    	}.start();
    	
    	while (!b); // attend que le thread démarre
    }
    
    public boolean continuer()
    {
    	return b;
    }
}

public class Test
{
    public static void main(String...args)
    {   
    	Attente a = new Attente();
    	
    	while (a.continuer())
    	{
    		// ...
    	}
    }
}
0
Simon R. Messages postés 24 Date d'inscription samedi 10 décembre 2011 Statut Membre Dernière intervention 10 mai 2013
5 juil. 2012 à 21:18
Merci beaucoup! Seulement je suis capricieux :P en java y a-t-il moyen d'écrire tout cela dans un while, comme dans le pseudocode plus haut?
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
5 juil. 2012 à 21:36
Le problème c'est que la lecture du clavier est bloquante, donc tu ne peux plus rien faire dès que tu commences à lire sur le clavier, c'est pour ça que je l'ai fait avec deux threads, le premier bloque jusqu'à lire une entrée, alors que le deuxième continue tant que le premier est bloqué...

Donc ce n'est pas tout à fait "tout dans le while" mais ce j'ai fait avec mon while(a.continuer()) correspond à ton pseudo-code puisque la méthode renverra true tant que la touche entrée n'aura pas été appuyée.
0
Simon R. Messages postés 24 Date d'inscription samedi 10 décembre 2011 Statut Membre Dernière intervention 10 mai 2013
6 juil. 2012 à 17:51
Parfait ça c'est bien clair! Merci beaucoup!!
0