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

AWT/Swing Java Discussion :

[JPanel] input clavier


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut [JPanel] input clavier
    Bonjour à tous,
    J'ai un tout petit projet informatique à faire pour les cours : un jeu de domino!
    Aimant bien le Java et n'ayant pas souvent l'occasion d'en faire, je me suis dis que c'était l'occasion de m'y remettre!
    J'ai installé eclipse 3.2 (le bonheur!! ) puis j'ai coder un petit jeu de domino sans interface graphique avec juste un texte afficher sur la console et une gestion des input clavier avec un BufferedReader.
    Jusque la tous va bien!!
    Mais j'ai voulu rajouter une petite interface graphique pour afficher un semblant de domino (des rectangles avec des chiffres dedans), alors j'ai pris le code de ce tutorial :

    tuto

    Que j'ai adapté à mon jeu.
    Malheuresement, comme mon jeu est une boule de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while(!myGame.EndOfGame())
    {
            //actualisation du jeu
    }
    Ma fenetre JCanvas bug à l'affichage car elle n'est pas réactualisée!
    Alors, je me suis dis qu'il fallait que je créé un thread à part pour la boucle de mon jeu, ce que j'ai fais... Mais avec le même résultat!

    Donc, ma question est simple (malgrès la longeur de ce post ) :

    comment gérer l'affichage d'un JCanvas tout en gérant une boucle de jeu qui prend des input clavier?

    Ca peu vous paraître simple, mais je n'ai pas trouver de solutions actuellement.

    Merci d'avance pour votre aide,
    A bientot,

    dede

  2. #2
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Méfie-toi que JCanvas n'évoque pas grand chose : c'est juste le nom d'une classe dans l'exemple sur lequel tu travailles.

    Concernant ton problème, il faut effectivement travailler sur les threads. Ta particularité est que tu souhaites entrer des évènements clavier depuis une console, ce qui est un excellent exercice ; cependant, usuellement, les évènements clavier arrivent par le GUI lui même, par l'intermédiaire d'un champ de formulaire, par exemple, et il n'y a pas ce souci de thread ; mais il y en a d'autres.

    Il existe toujours un thread réservé à swing, créé par la mécanique swing. Toi, tu lis, probablement, le clavier depuis un thread à toi. Pour faire une mise à jour de l'affichage depuis le thread clavier il faut utiliser SwingUtilities.invokeAndLater, ou invokeAndWait.

    Des infos sur tout ça dans How to Use Threads (avec swing).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Méfie-toi que JCanvas n'évoque pas grand chose : c'est juste le nom d'une classe dans l'exemple sur lequel tu travailles.
    Oui, en effet exuse moi, j'implémente en fait la classe JPanel...
    D'ailleurs, tu me parles Swing, mais la classe JPanel ne fait pas partie de swing non? Mais je peux tout de même utiliser un thread swing c'est ça?

    Sinon, pour gérer les évènements clavier avec mon Panel, il faut que je créer un Listener non? J'avais fait ca pour un paint qui gérer la souris, mais justement je voulais pas faire quelquechose de trop compliqué pour ce programme,mais bon je vais peut-être revenir la dessus.

    Je vais tester les input clavier avec tes fonctions swing et si ca marche, je pense que j'irai pas plus loin .

    En tout cas merci pour ta réponse.

    A+

    dede

    P.S : ton avatar ça serait pas une photo de ce que l'on appel les "chemtrail"?

  4. #4
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Citation Envoyé par dedesite
    P.S : ton avatar ça serait pas une photo de ce que l'on appel les "chemtrail"?
    Non, c'est une toute petite partie de ça.

    Bon, maintenant, et toi, est-ce que tu peux me dire ce qu'est un chemtrail ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Les chemtrails sont des trainées d'avion qui apparement serait un peu spéciales... Tout ça fait partie d'une vaste théorie du complot très controversée, j'ai pas vraiment d'avis la-dessus, mais je me suis un peu informé, je dois dire que c'est bizarre, mais de la à dire que c'est vrai...

    liens wikipédia

    A+

    dede

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    En fait, je vois pas vraiment comment prendre des input clavier avec la fonction invokeAndWait ou invokeAndLater ?
    Ces fonctions servent en fait à créer un thread où l'on executerais une fonction passée en paramètre c'est ça?
    J'ai essayé de lui passé ma fonction où je prenais mes inputs clavier mais l'application à plantée...
    Puis de toute façon il reste toujours ma boucle "interminable" que constitue la boucle principale du jeu, elle bloquera toujours le thread d'affichage celle la non?
    Je comprend pas pourquoi le fait de mettre toute cette boucle dans un thread a part n'a pas fonctionner?
    Enfin bref, je me rend compte que y'a pleins de truc en Java que je connais pas et que c'est un peu plus compliqué que je ne le pensais... Dommage moi qui voulait faire un truc sympa. J'ai pas le temps de regarder en détails toutes ces choses, ma prof devra se contenter d'un jeu sur console (text hein pas console de salon ) si je ne trouve pas une solution d'ici demain.

    A+
    dede

Discussions similaires

  1. linux, input clavier/souris
    Par kripteks dans le forum C++
    Réponses: 6
    Dernier message: 03/03/2013, 12h04
  2. Réponses: 8
    Dernier message: 15/08/2011, 21h20
  3. Réponses: 2
    Dernier message: 04/08/2010, 22h20
  4. Clavier JPanel JEditor
    Par midotek dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 07/12/2008, 13h22
  5. Input clavier et UNICODE ?
    Par Clad3 dans le forum SDL
    Réponses: 9
    Dernier message: 09/01/2007, 17h43

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