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

Interfaces Graphiques en Java Discussion :

Problème graphique


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut Problème graphique
    Bonjour ,
    J'ai un problème j'utilise eclipse car je trouve cela plus simple pour Windows mais lorsque j'exécute une classe sous un applet il me crée un cercle alors qu 'il devrait m'en crée 3. Quand j'ai pu tester avec le JDK , le même programme m'en donné 3.




    Voila le code est mis en pièce jointe.
    J'ai un autre problème aussi qui lui peu être lié a l'autre.
    Une fois l'applet lancé je pense qu'il y a une erreur de code quelque part dans le mouvement mais je ne sais pas trop laquelle sachant que l'espèce d'asticot doit se déplacer de manière aléatoire suivant un cap

    Merci d'avance de votre aide

    Cordialement

  2. #2
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Bonjour,

    Je viens de récupérer ton code. Avant même de pouvoir reproduire le problème que tu signales, j'ai du renommer les fichiers .txt en .java, corriger le nom de l'une des classes, retoucher un peu le code pour éviter une exception "java.lang.IllegalArgumentException: adding container's parent to itself"... et je pense qu'il y a encore des suprises cachées car je vois dans le code quelques boutons que je ne retrouve pas dans l'applet.

    Pour finir, une fois que tous les problèmes sont corrigés, j'ai bien une chenille d'une dizaine de cercle qui apparaît.

    Du coup, difficile de t'aider si ça fonctionne. Commence peut être par corriger le code que tu as pu mettre sur le site pour qu'il soit exécutable sans retouche. Quand tu reproduis le problème avec ce code, tu le republies et ensuite on pourra peut être t'aider.

    Benoit

  3. #3
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Dans le test de la tête de chenille, l'angle changé est celui de la tête de chenille.

    Dans le test de la chenille, l'angle changé est celui de la chenille et non celui de la tête de chenille.

    Est-ce que le problème ne viendrait pas de là ?

    Benoit

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Comment appeler maTeteDeChenille dans maChenille ci le problème viendrait de la ? Ce pourrait être ça car dans maChenille angleDeVision n'existe pas non ?

  5. #5
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Comment appeler maTeteDeChenille dans maChenille ci le problème viendrait de la ?
    Dans la chenille, il existe teteDeChenille... n'est-ce pas ce que tu pourrais appeller ?

    Ce pourrait être ça car dans maChenille angleDeVision n'existe pas non ?
    Dans la chenille il existe aussi angleDeVision, mais il ne sert à rien...

    Benoit

  6. #6
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Je penser utiliser la classe TeteDeChenille dans Chenille comme les classe externes que l'on importe mais cela me fais une erreur.
    Et en utilisant juste tete.getX cela ne marche pas non plus
    Dans chenille la tête est représenté par :
    private TeteDeChenille tete;

    this.tete = new TeteDeChenille(this.epaisseur, this.epaisseur*2, 0, angleVision)

    On pourrait utiliser ça si la chenille serait une extension de la tête mais ce ne serait pas logique non ?
    Qu'appelles tu une "extension" ?

    Dans testTeteDeChenille, sur un objet TeteDeChenille tu fais appelles à la méthode setAngleDeVision().

    Dans Chenille, tu as le même objet (TeteDeChenille), pourquoi ne ferais tu pas appel à la même méthode (setAngleDeVision) ?

    Benoit

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    je n'ai pas compris desolé comment peut on faire appel a l'obet teteDeChenille dans maChenille ?

  8. #8
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Voici ce que j'ai trouvé dans TestTeteDeChenille.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            if (e.getActionCommand() == "-"
                    && maTeteDeChenille.getAngleDeVision() > 0) {
                maTeteDeChenille.setAngleDeVision(maTeteDeChenille
                        .getAngleDeVision() - 5);
                repaint();
            } else if (e.getActionCommand() == "+"
                    && maTeteDeChenille.getAngleDeVision() < 180) {
                maTeteDeChenille.setAngleDeVision(maTeteDeChenille
                        .getAngleDeVision() + 5);
                repaint();

    Dans Chenille.java, tu peux utiliser les mêmes méthodes avec l'objet tete qui est de de type TeteDeChenille : tete.setAngleDeVision() et tete.getAngleDeVision().

    Benoit

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    désolé mais eclipse ne reconnait pas tete.setAngleDeVision ou get . L'erreur est tete cannot be resolved

  10. #10
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Si je reprends le fichier Chenille.java que tu as fourni dans ton premier post et que je modifie la méthode getAngleDeVision() en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public float getAngleDeVision()  {return tete.getAngleDeVision();}
    je n'ai pas d'erreur de compilation.

    Tu as du faire des modifications entre temps sur le fichier Chenille.java. A toi de trouver comment se nomme maintenant ta variable de type TeteDeChenille et d'écrire ensuite le code correctement.

    Benoit

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Cela ne marche toujours pas , j'ai toujours ma chenille mais mes angles de vu (les lignes rouges autour de la tête ) ne bougent pas
    Dsl du dérangement

  12. #12
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    Tu as modifié quelles méthodes dans Chenille.java ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    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
    60
    61
    62
    63
    64
    65
    66
    67
    import java.awt.Color ;
    /**
     * une Chenille possede une epaisseur, une longueur, une couleur, un angleDeVision, elle
     * est constituee d'une tete et d'un corps :
     * * son angleDeVision est celui de sa tete
     * * le corps est constitue d'anneaux (cercle qui se chevauchent)
     * * sa longueur correspond au nombre d'anneaux dans le corps
     * peut se deplacer
     * @author (your name) 
     * @version (a version number or a date)
     */
    public class Chenille
    {   private float          epaisseur; // epaisseur de la chenille
        private int            longueur; // longueur du corps en nombre d'anneaux
        private Color          couleur ;
        private TeteDeChenille tete;
        private Cercle []      corps; // tableau de cercles
    
        /**
         * Constructor for objects of class Chenille
         */
        public Chenille(int longueur, float epaisseur, float angleVision, Color c){
            this.longueur      = longueur; // longueur du corps
            this.epaisseur     = epaisseur;
            this.couleur       = c;
            this.tete          = new TeteDeChenille(this.epaisseur, this.epaisseur*2, 0, angleVision);
            this.corps       = new Cercle[this.longueur];
            for(int i=0 ; i<this.longueur ; i++){corps[i]=new Cercle(tete.getX()-(i+1)*epaisseur/2*(float)Math.cos(tete.getCap()),tete.getY()-(i+1)*epaisseur/2*(float)Math.sin(tete.getCap()),epaisseur);
            
            }}
        
        public float getAngleDeVision()  {return tete.getAngleDeVision();}
        public void setAngleDeVision(float a) {}
        
        /** une Chenille peut se deplacer :
        *  son deplacement est determine par celui de sa tete
        *  lors du deplacement, l'ensemble de son corps suit le mouvement de sa tete
        */
        public void deplacer(){
            this.tete.deplacer() ;
    
    float tx=tete.getX() ;
    
    float ty=tete.getY() ;
    for(int i=0 ; i<this.longueur ; i++) {
    
    float cx=corps[i].getX() ;
    
    float cy=corps[i].getY() ;
    corps[i].placerA(tx,ty) ;
    tx=cx ;
    ty=cy ; // deplacer le corps
            }
        }
        
        /** une Chenille peut se dessiner :
        *  en dessinant chaque partie de son corps
        *  et en dessinant sa tete
        *  @param le contexte graphique
        */
        public void dessiner(java.awt.Graphics g){
            this.tete.dessiner(g,couleur) ;// dessiner la tete
    for(int i=0 ; i<this.longueur ; i++){
    this.corps[i].dessiner(g,couleur) ;}// dessiner le corp
            
        }
    }
    ha le setter n'est pas défini cela vient peut être de la.
    public void setAngleDeVision(float a) {tete.setAngleDeVision=a;}
    Comme cela ca ne marche pas
    Cordialement

  14. #14
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    La méthode getAngleDeVision() te permet de lire l'angle de vision. Tu viens de la corriger. Mais as tu corrigé la méthode qui permet de mettre à jour l'angle de vision ?

    Benoit

  15. #15
    Membre éclairé

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Points : 791
    Points
    791
    Par défaut
    j ai modifié ma question en meme temps que votre réponse , je disais que j'avais defini le setter comme ci dessous mais il y a une erreur "setAngledevision cannot be resolved or not a field"
    public void setAngleDeVision(float a) {tete.setAngleDeVision=a;}
    cordialement
    setAngleDeVision est une méthode de la classe TeteDeChenille. Tu ne peux pas l'utiliser comme tu l'as fait.

    Inspires toi du fichier TestTeteDeChenille.java qui fonctionne pour trouver la syntaxe correcte à utiliser. Et si vraiment tu ne trouves pas, n'hésites pas à refaire signe.

    Benoit

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

Discussions similaires

  1. Problème graphique
    Par Akasha2509 dans le forum Scheme
    Réponses: 1
    Dernier message: 03/12/2006, 11h43
  2. Problème graphique & calcul dans champ
    Par jacquesprogram dans le forum Access
    Réponses: 1
    Dernier message: 08/09/2006, 15h09
  3. [Cacti ] Problèmes graphiques
    Par seumeneur dans le forum Développement
    Réponses: 2
    Dernier message: 23/07/2006, 16h14
  4. Gros problème graphique
    Par Blo0d4x3 dans le forum Windows XP
    Réponses: 7
    Dernier message: 16/06/2006, 21h12
  5. Problème graphique (Vectoriel?...)
    Par Aloneghost dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2006, 17h38

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