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 :

[debutante] pb d'affichage avec paint


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut [debutante] pb d'affichage avec paint
    Bonjour,

    J'essaie de faire une simulation de zoo (dans une applet) et j'ai commencé a créer une classe Lion et une classe Zoo.
    A partir de la classe Lion j'ai créé 4 lions avec des placements aléatoires que je mémorise dans un vector unique.
    Mon souci est pour afficher les 4 lions représentés chacun par un carré jaune sur un grand rectangle bleu ! seul le dernier lion est visible ! lorsque je demande l'affichage des coordonnées les 3 premières sont écrasées par le dernier
    d'avance de votre aide !

    le code est dessous :
    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
     
    public class Lion
    {
        int positLX;
        int positLY;
        int longueur;
        int largeur;
     
        public Lion(int positLX, int positLY, int longueur, int largeur)
        {
            this.positLX   = positLX;
            this.positLY   = positLY;
            this.longueur = longueur;
            this.largeur  = largeur;
        }
    }
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    import java.util.*;
    import java.awt.*;
    import java.applet.*;
     
     
    public class Zoo extends Applet
    {
        int positLX;
        int positLY;
        int longueur = 13;
        int largeur  = 13;
        Vector vLion;
     
     
        public void init()
        {
            setLayout(null);
            initZoo();
        }
     
        public void initZoo()
        {
            vLion = new Vector();
     
            for(int i = 0; i < 4; i++)
            {
                Lion r = new Lion(positLX, positLY, longueur, largeur);
     
                positLX = (int)(Math.random() * 600);
                positLY = (int)(Math.random() * 450);
     
                vLion.add(r);
     
                System.out.println("positLX lion : "  + positLX);
                System.out.println("positLY lion : "  + positLY);
                System.out.println("vLion.size() : " + vLion.size());
     
                System.out.println("vLion : " + vLion);
            }
     
        }
     
        public void paint(Graphics g)
        {
            g.setColor (Color.blue);
            g.fillRect(0,0,600,450);
     
            for(int i = 0; i < vLion.size(); i++)
            {
                g.setColor(Color.yellow);
                vLion.get(i);
                g.fillRect(positLX, positLY, longueur, largeur);
                System.out.println("positLX + positLY : " + positLX + " " + positLY);
            }
     
        }
     
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
    <body>
    <center>
    <applet code = "Zoo.class" width = "900" height = "600">
    </center>
    </applet>
    </body>
    </html>

  2. #2
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    Bonsoir,

    Je pense que le problème vient de cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int i = 0; i < vLion.size(); i++)
    {
    g.setColor(Color.yellow);
    vLion.get(i);
    g.fillRect(positLX, positLY, longueur, largeur);
    System.out.println("positLX + positLY : " + positLX + " " + positLY);
    }
    Il faudrait plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i = 0; i < vLion.size(); i++)
    {
    g.setColor(Color.yellow);
    // On récupère les valeurs pour le lion en cours
    Lion currentLion = vLion.get(i);
    // On dessine le rectangle pour le lion en cours
    g.fillRect(currentLion.positLX, currentLion.positLY, longueur, largeur);
    System.out.println("positLX + positLY : " + positLX + " " + positLY);
    }
    D'ailleurs, si je peux me permettre, les attributs de classe positLY et positLX n'ont rien à faire dans la classe zoo. Elles ne devraient être déclarées que lors de l'initialisation du zoo.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut [debutante] pb d'affichage avec paint
    Salut Vincent,

    D'abord merci pour ta réponse
    Je viens d'essayer la modif du code mais à la compilation j'ai un message qui me dit que les types sont incompatibles
    J'ai essayé d'importer le package mais ça ne change rien.
    Est ce parce que je travaille en java et non en javascript ???

  4. #4
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    Bonjour,
    Désolé, j'avais oublié le cast.
    Comme tu récupères un object dans une collection, il faut le caster pour indiquer qu'il s'agit d'un object de type Lion.
    Remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lion currentLion = vLion.get(i);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lion currentLion = (Lion)vLion.get(i);
    et ça devrait marcher.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut
    Effectivement ça marche !
    Merci encore !!!

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

Discussions similaires

  1. Problème d'affichage avec la fonction paint
    Par Fleur du Pays dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 11/02/2011, 20h33
  2. problemes d'affichage avec paint
    Par Agrapheuse dans le forum Applets
    Réponses: 5
    Dernier message: 17/10/2007, 14h14
  3. Resolution d'affichage avec x11
    Par cosmos38240 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 06/06/2004, 23h26
  4. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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