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

 Java Discussion :

Probleme avec JPanel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Par défaut Probleme avec JPanel
    Bonjour,

    Je débute en java et je me suis lancé dans un projet, un mini jeux genre space invader. Seulement j'ai un problème que je n'arrive pas à résoudre ^^'

    En faite j'ai une classe qui crée la fenetre de jeu, une autre qui crée un JPanel et dessine le joueur dans la fenetre de jeu. Jusque là tout va bien ^^

    Seulement j'ai une autre classe qui crée un objet que j'aimerais dessiner dans ma fenetre de jeu mais je ne vois vraiment pas comment faire

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Bienvenue sur Developpez.com

    Pour faire du dessin en java, tu dois redéfinir la méthode paintComponent de ton JPanel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class panneau extends JPanel
    {
    [...]
    protected paintComponent(Graphics g)
    {
     
    // opérations de dessin ...
     
    }
     
    }
    Voila comme première réponse à ta question.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Par défaut
    C'est exactement ce que j'utilise pour dessiner mon Joueur ^^

    Mais en faite là où je bloque c'est pour rajouter un autre "dessin". Je m'explique :

    j'ai une classe KeyListener qui lorsque l'on appuie sur la touche espace crée un objet A et c'est cette objet A que je voudrais dessiner sur mon Panel.

    ( je sais pas si je suis sufisament explicite )

  4. #4
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par oskko Voir le message
    j'ai une classe KeyListener qui lorsque l'on appuie sur la touche espace crée un objet A et c'est cette objet A que je voudrais dessiner sur mon Panel.

    Je peux pas te donner une réponse exacte, car cela dépend de ton code, mais tu peux par exemple mettre les objets à dessiner dans un vecteur, par la suite, dans la méthode paintComponent, tu fais le parcours de ce vecteur et tu fais le dessin de ces objets.

    Après l'appui sur la touche espace, tu ajoute l'Objet A à ce vecteur et tu fais un appel explicite à la méthode paintComponent() avec l'instruction:


  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Par défaut
    Huum, je penses que le mieu serait de vous montrez mon code. Est ce que je pourrais vous l'envoyer par mail ou en le postant sur pastebin ?

  6. #6
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Tu peux directement le poster sur ce post
    Pour compléter la réponse de slim_java, Il faut que tu stock toutes les instances à dessiner dans un Conteneur (vecteur, list,...) de type IDrawable :
    L'interface IDrawable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import java.awt.Graphics;
    import java.awt.Rectangle;
     
    public interface IDrawable {
    	public  void draw(Graphics g);
    	public Rectangle getRectangle();     
    }
    Ensuite il faut que les objets à dessiner ( par exemple joueur) implémente IDrawable et qu'il redéfinisse draw :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Joueur implements IDrawable{
     private Image image = new ImageIcon("./data/img/dott2.gif").getImage();//Image du personnage
    private int posX, posY;
     
     /** Dessin du joueur */
        public void draw(Graphics g) {
             g.drawImage(image, posX, posY, null);
        }
    Pour terminer, ton panel doit parcourir le conteneur contenant les objets à dessiner et appeler la méthodes draw pour chacun d'eux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public void paintComponent(Graphics g) {
    //Ici mon conteneur est une liste qui contient x objet IDrawable
    for(int i=0;i<listDessin.length;i++){
          listDessin.get(i).draw(g);
    }
    }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Par défaut
    D'accord, je vais voir déja avec ça ce que je peux faire

    Merci

  8. #8
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par oskko Voir le message
    Huum, je penses que le mieu serait de vous montrez mon code. Est ce que je pourrais vous l'envoyer par mail ou en le postant sur pastebin ?

    Mieux vaudrait poster ton code. Ça pourrait servir d'autres pouvant avoir le même problème.
    Tu auras une réponse de ma part(je reviens la nuit ) ou de la part d'un autre membre.

Discussions similaires

  1. probleme avec JPanel et JScrollPane
    Par josephgl dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 15/05/2010, 10h49
  2. probleme avec JPanel
    Par riadhhwajdii dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/10/2009, 11h52
  3. Probleme avec mon code : Comment changer de JPanel
    Par serialkilled dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/12/2006, 10h13
  4. Probleme avec les JPanel dans les JSplitPane
    Par L4BiN dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 16/08/2006, 14h29
  5. [debutant][swing] Probleme avec un Jpanel
    Par JeanMoul dans le forum Débuter
    Réponses: 6
    Dernier message: 27/08/2005, 19h07

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