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 :

Fermer un scanner


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2003
    Messages : 59
    Par défaut Fermer un scanner
    Bonjour,

    Est ce que c'est possible d’arrêter une saisie en cours?
    Donc un utilisateur introduit des saisies, puis après un délai du à un timer, on lui propose s'il veut réencoder.
    Mais j'ai toujours la saisie en cours puis la nouvelle.

    Merci.

    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
     
    @Override
        public void actionPerformed(ActionEvent e) {
            try {
                Thread.sleep(10 * 1000);            
                timer.stop();
                if (!finished) {
                    System.out.println("Temps écoulé");
                    finished = true;
                    try {
                        System.in.read();  // j'ai essayé cette ligne ça ne fonctionne pas
                    } catch (IOException ex) {
                    }
                    reencoder();
                }
            } catch (InterruptedException ex) {}
        }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Déjà dans ton code, il y a du mélange entre l'interface graphiques (ActionPerformed) et la console (System.in), ce qui n'a pas beaucoup de sens.

    Ta saisie, elle a lieu où? Tu la fais comment?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2003
    Messages : 59
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Déjà dans ton code, il y a du mélange entre l'interface graphiques (ActionPerformed) et la console (System.in), ce qui n'a pas beaucoup de sens.

    Ta saisie, elle a lieu où? Tu la fais comment?
    J'utilise un timer d'ou l'implementation du actionperfomerd, ça fonctionne même en console.

    Je l'ai fait simplement comme ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void introduireDonnees() {
            Scanner sc = new Scanner(System.in);
            String saisie;
            saisie = sc.nextLine();
            //
    Et dans la méthode reencoder, l'utilisateur introduit son choix mais l'ancienne saisie est toujours actif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     public void reencoder() {
            System.out.println("Voulez-vous recommencer (O)ui / (N)on");
            Scanner sc = new Scanner(System.in);
            String saisie = sc.nextLine();
            //

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Mercenaire Voir le message
    Est ce que c'est possible d’arrêter une saisie en cours?
    Dans la console et en pur Java indépendant de l'OS, non.

    Il doit certainement exister des bibliothèques, pour différents OS, qui étendent la gestion de la console par Java. Mais je n'en connais pas qui permettent ça.
    Honnêtement, il vaut mieux y renoncer et faire autrement.

    Citation Envoyé par Mercenaire Voir le message
    J'utilise un timer d'ou l'implementation du actionperfomerd, ça fonctionne même en console.
    Ça fonctionne pour écrire quelque chose dans la console, à la limite. Mais pas pour toucher à la saisie.
    Ça n'a pas beaucoup de sens, donc.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    La console est une application séparée de ton programme java, et la console envoie ce que tu tape au clavier vers le System.in de java. Tu n'a aucun controle dessus. D'ailleur c'est pas nécessairement un clavier, ça peux être un fichier ou la sortie d'un autre programme.

    Pour le timer, utiliser java.util.Timer plutot que javax.swing.Timer. Sinon ça force java à démarrer toute sa pile graphique pour rien ^^

    Evite aussi de faire plusieurs Scanner sur le system.in, car ce qui est dans le buffer d'un scanner n'ira pas dans le buffer de l'autre!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2003
    Messages : 59
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    La console est une application séparée de ton programme java, et la console envoie ce que tu tape au clavier vers le System.in de java. Tu n'a aucun controle dessus. D'ailleur c'est pas nécessairement un clavier, ça peux être un fichier ou la sortie d'un autre programme.

    Pour le timer, utiliser java.util.Timer plutot que javax.swing.Timer. Sinon ça force java à démarrer toute sa pile graphique pour rien ^^

    Evite aussi de faire plusieurs Scanner sur le system.in, car ce qui est dans le buffer d'un scanner n'ira pas dans le buffer de l'autre!
    Est ce qu'on sait avoir des buffers séparés pour des saisies?

Discussions similaires

  1. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32
  2. [FORM] supprimer l'icone fermer
    Par Evil onE dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/02/2003, 16h25
  3. Fermer l'animation (swf/exe lancé depuis Windows)
    Par ZiZouJH dans le forum Flash
    Réponses: 3
    Dernier message: 14/01/2003, 10h00
  4. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42
  5. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

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