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 :

[Débutant] Problème de "Cannot find symbol"


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut [Débutant] Problème de "Cannot find symbol"
    Bonsoir, j'ai un petit problème de débutant que je n'arrive pas à régler.

    Mon programme est fait de deux fichiers (Graph.java et Frame.java).
    Dans le premier j'ai un code tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Graph extends JPanel {
        public void paint(Graphics g) {
            g.setColor(java.awt.Color.GREEN);
            Dimension size = getSize(); 
            g.translate(size.width / 2, size.height / 2);
            g.drawLine(-size.width / 2, 0, size.width / 2, 0);
            g.drawLine(0, -size.height / 2, 0, size.height / 2);
        }
    }
    Dans le deuxième, lorsque je veux tracer une ligne, par exemple, lors de l'appui sur un bouton,

    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
    public class Frame extends JFrame implements ActionListener {
        public Frame() {
            //du code
            Graph g = new Graph();
        }
     
        public void actionPerformed(ActionEvent e) {
            g.drawLine(-100, 100, 100, -100);
        }
     
        public static void main(String args[]) {
            Frame f = new Frame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(800, 600);
            f.setVisible(true);
        }
    }
    j'obtiens l'erreur :
    cannot find symbol
    symbol : variable
    location: class Frame

    Pourtant, j'ai bien créé une instance de Graph, donc je ne vois pas trop.

    Merci d'avance

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    MMMMMMMMHHHHHHHHHH

    La classe et son constructeur ne devrait elles pas avoir le même nom par le plus grand des hasards, car ce n'est pas le cas dans ton code
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Arf, c'était juste une erreur de recopie, j'ai d'ailleurs recompilé et je n'ai pas d'erreur dans mes fichiers autre que celle que j'ai mentionnée dans le premier post.

    Dois-je créer une instance de Graph dans le fichier Graph.java ?

    Merci de ton aide ^^

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bon, j'ai peut-être eu une inspiration () en lisant ce topic, donc j'ai instancié come ceci :

    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
     
    public class Frame extends JFrame implements ActionListener {
        Graph g = new Graph();
     
        public Frame() {  
            //du code   
        }      
     
        public void actionPerformed(ActionEvent e) {
            g.drawLine(-100, 100, 100, -100); }
     
        public static void main(String args[]) {  
            Frame f = new Frame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(800, 600);
            f.setVisible(true); 
        }
    }
    Mais maintenant, j'obtiens cette erreur :

    cannot find symbol
    method drawLine(int,int,int,int)
    class Graph

    Merci d'avance

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Je ne vois pas cette méthode déclarée dans ta classe Graph...
    Soit tu l'implémentes dans ta classe, soit tu y fais appel sur une instance de Graphics.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Je n'ai pas bien compris ta réponse, en fait je ne comprends tout simplement pas pourquoi drawLine n'est pas reconnue puisque c'est une méthode de Graphics, et que j'ai créé un objet de type Graph.

    Ce que je veux dire, c'est pourquoi drawLine fonctionne dans la classe Graph mais pas dans la classe Frame

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tout simplement car la méthode paint de graph prend en paramèter un Objet de type graphics...

    Alors que tu ne dispose pas des graphics de ta JFrame (de toute façon une JFrame n'est pas prévue pour faire du dessis, au contraire des classes héritant de JComponent)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ah ok, mais il y a moyen de changer le code pour pouvoir tracer quelque chose ? Est-ce que je peux mettre l'ActionEvent dans le fichier Graph ?

    Et sinon, ma JFrame contient deux JPanel, dont l'un contient le graphique, donc ça doit aller pour faire du dessin (je viens d'aller voir la doc de Java et un JPanel hérite bien de JComponent).

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pas de problème en ce qui concerne la mise en place de l'inteface ActionListener sur un JPanel plutôt que sur une JFrame
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Merci, j'ai essayé en plaçant l'Event dans le fichier Graph mais j'ai toujours la même erreur.

    Bon je vais faire une pause pour le moment

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour, je pense m'être à peu près sorti de mon problème, mais bon maintenant j'en ai un autre (un peu moins embettant tout de même).

    J'ai toujours deux JPanel à l'intérieur de ma JFrame, dans le premier des JTextField pour rentrer des données et dans le deuxième le graphique (mais vide au départ). Cependant, lorsque j'appuie sur le bouton pour tracer le graphique, rien ne s'affiche avant que je ne redimensionne la fenêtre.

    Comment faire pour que le graphique s'affiche automatiquement lors de l'appui sur le bouton ? J'ai essayé les méthodes update() et repaint(), mais je ne sais pas comment elles fonctionnent, et d'ailleurs je ne sais pas si je dois les appliquer au graphique ou au JPanel.

    Merci

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Up !

Discussions similaires

  1. Problème "cannot find symbol"
    Par polaroid62 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 27/12/2013, 19h48
  2. cannot find symbol class sprite
    Par Risike dans le forum Java ME
    Réponses: 3
    Dernier message: 27/06/2007, 11h33
  3. [Bizarre] cannot find symbol
    Par Fredo02 dans le forum Langage
    Réponses: 1
    Dernier message: 22/12/2006, 01h01
  4. [debug] "cannot find symbol" classe interne
    Par NailMaker dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2006, 20h00

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