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

Composants Java Discussion :

Ecriture bloquante dans JTextField


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Ecriture bloquante dans JTextField
    Bonjour à tous,
    je réalise un petit jeu assez simple et je souhaiterai avoir vos conseils.
    Pendant le jeu,le joueur peut avoir des discussions avec d'autres persos du jeu et
    donc je cherche un moyen de bloquer le déroulement du jeu tant que le joueur n'a pa
    saisi (dans une JTextField) le réponse et valider par Entrée.
    Que me conseiller vous de faire?
    En console j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    InputStreamReader lecteur = new InputStreamReader (System.in) ;
    BufferedReader entree = new BufferedReader (lecteur) ;
    return entree.readLine() ;
    qui est "naturellement" bloquant.
    Je cherche le même genre de comportement mais avec un JTextField
    Merci d'avance
    Bye

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Tu fais un JTextField sur lequel tu rajoute un ActionListener que tu ecoute avec la methode ActionPerformed...

    J'espere sa peut te servir

    ++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 101
    Points : 53
    Points
    53
    Par défaut
    suis ok pour l'événement mais en aucun cas c'est bloquant d'écouter un événement ?!

  4. #4
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    un truc pas très propre, tu boucle sur un booleen tant que ton jtextfield n'a pas été "fermé" (joueur qui appuie sur ok par exemple)...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while(!monBooleen)
    {
    try
    {
    Thread.sleep(100);
    }catch(Exception e)
    {
    Sop("oups, mon sleep déconne");
    }
    }
    et dans le actionPerformed du bouton OK tu mets monBooleen=true;

    C'est ptet pas propre, mais c'est une premiere aproche !

    mavina

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par rod59
    suis ok pour l'événement mais en aucun cas c'est bloquant d'écouter un événement ?!
    Et alors?
    Pourquoi veux-tu qu'il soit bloquant?
    Si c'est bloquant, ton interface ne pourrait pas se rafraîchir?

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour qu'il soit bloquant un truc sale mais qui pourrait marcher lui attribuer le focus indéfiniment jusqu'à ce que les conditions aient été remplies:

    Tu crées une classe implémentant FocusListener faisant un requestFocus() dans la méthode focusLost(...), tu instancie ce listener, l'ajoute au JTextField (ça fera en sorte qu'aucun autre élément de ton interface ne puisse réagir, plus aucune action ne pourra être déclenchée sur un composant autre que ton JTextField). Une fois les conditions réalisées tu retire ce FocusListener de ton JTextField

    Une autre plus propre serait de passer par une boite de dialogue modale (qui bloquera ton appli tant qu'elle n'aura pas été validée ou annulée

  7. #7
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Sinon, tu fous ton JTextfield dans une JDialog modale, là ça bloquera tout le reste.

    Inconvénient, le JTexfield ne sera pas dans ton interface mais ton une boîte de dialogue séparée.

    Où même plus simple, tu utilise la méthode showInputDialog de la classe JOptionPane qui va te créer une boîte de dialogue toute prête avec un champ de saisie dedans et qui te renvoie la réponse saisie par l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String reponseUtilisateur = JOptionPane.showInputDialog(taJFRamePArente, "Veuillez entrer une réponse");
    Ca c'est bloquant mais faut voir si ça te convient.

    Edit : c'est la réponse de Sinok en gros...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. selection de langue d'ecriture dans JTextField
    Par bravvve dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 13/03/2011, 11h16
  2. Réponses: 16
    Dernier message: 13/09/2005, 12h21
  3. ecriture unicode dans une mesagebox
    Par LRobi dans le forum C++
    Réponses: 1
    Dernier message: 23/02/2005, 18h23
  4. Ecriture auto dans un champ edit lors de la modif d'un autre
    Par KibitO dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/02/2005, 19h03
  5. Synchronize bloquant dans un thread
    Par bencot dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2004, 17h42

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