IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Catcher touche Enter pendant que le traitement continue


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Élève
    Inscrit en
    Avril 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Avril 2004
    Messages : 97
    Points : 62
    Points
    62
    Par défaut Catcher touche Enter pendant que le traitement continue
    Bonjour,

    J'ai un programme java qui est lancé dans une console (je n'utilise pas swing donc).
    Le programme affiche des choses sur la console et je voudrais que si l'utilisateur presse la touche "enter", ça interrompe l'affichage pour lancer un autre traitement.
    Je me suis penché sur la classe Scanner mais le problème c'est qu'elle bloque le programme jusqu'à ce qu'une touche soit pressé.

    Avec-vous une idée ?
    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 326
    Points : 439
    Points
    439
    Par défaut
    Bonjour,

    Pourquoi pas avec deux threads, un pour écrire et un pour lire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public class Console {
        public static void main(String[] args) {
            // Stocke l'état du programme
            final AtomicBoolean stop = new AtomicBoolean(false);
            // Un thread qui écrit constamment dans la console jusqu'à ce qu'il soit 
            // stoppé.
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (!stop.get()) {
                        System.out.println(LocalDateTime.now());
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }).start();
            // Un autre thread qui va attendre un input pour arrêter le programme
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        System.in.read();
                        System.err.println("Pressed");
                        stop.set(true);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
     
                }
            }).start();
        }
    }

  3. #3
    Membre du Club
    Profil pro
    Élève
    Inscrit en
    Avril 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Avril 2004
    Messages : 97
    Points : 62
    Points
    62
    Par défaut
    Merci beaucoup pour l'exemple. Il est super
    Par contre, est-il possible à partir du 1er thread de relancer le 2nd ?
    (le 2nd thread est lancé au démarrage mais une fois que la touche est pressée, j'ai l'impression que l'on sort de celui-ci...)

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/10/2019, 23h48
  2. Réponses: 4
    Dernier message: 23/09/2014, 16h57
  3. Réponses: 4
    Dernier message: 28/08/2007, 17h44
  4. [windev11]traitement touche enter
    Par nath-0-0 dans le forum WinDev
    Réponses: 5
    Dernier message: 18/04/2007, 17h02
  5. Réponses: 2
    Dernier message: 29/08/2005, 18h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo