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

Langage Java Discussion :

[Language]La méthode x n'est pas définie pour le type y


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Language]La méthode x n'est pas définie pour le type y
    Bonjour,

    J'ai un problème de débutant

    J'ai deux classes et j'essaie d'appeler une méthode la classe 2 à partir de la classe 1. Le message d'erreur que je reçois est :
    La méthode totoprint n'est pas définie pour le type toto.

    voici le code
    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
     
    package Test;
     
    import javax.swing.JApplet;
    import javax.swing.JButton;
     
    public class testjava extends JApplet {
     
    	private javax.swing.JPanel jContentPane = null;
    	private javax.swing.JButton classebouton = null;
     
    	public testjava() {
    		super();
    		init();
    	}
     
    	public void init() {
    		this.setSize(300, 200);
    		this.setContentPane(getJContentPane());
     
    //l'erreur se produit ici,.
    		classebouton.totoprint();
    //
    	}
     
    	private javax.swing.JPanel getJContentPane() 
    	{
    		if (jContentPane == null) {
    			jContentPane = new javax.swing.JPanel();
    			java.awt.FlowLayout layFlowLayout1 = new java.awt.FlowLayout();
    			layFlowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);
    			jContentPane.setLayout(layFlowLayout1);
     
    			classebouton = new toto(); 
    			classebouton.setText("bouton toto");
     
    			jContentPane.add(classebouton, null);
    		}
    		return jContentPane;
    	}
     
    	private class toto extends JButton
    	{
    		void totoprint()
    		{
    			System.out.println("Ça marche!");
    		}
    	}
    }
    Je ne comprends pas pourquoi je ne peux appeler la méthode. Quelqu'un peut-il m'aider?

    Merci, Gilles.

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Car classebouton est déclarée comme JButton, donc à priori elle ne possède pas la méthode totoprint().

    Il faut que tu utilises un cast pour dire au compilateur que classebouton est bien de type toto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //l'erreur ne devrait plus se produire ici,.
          ((toto) classebouton).totoprint();
    //
    ou alors que tu déclares classebouton comme un objet de type toto.

  3. #3
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Et quelques autres conseils puisque tu as l'air de débuter

    - Prends l'habitude de nommer tes classes avec un nom commencant par une majuscule. C'est une convention qui permet de distinguer rapidement les types des variables.

    - Si tu importes les classes, inutile de les renommer complètement dans le code. Plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    package Test;
     
    import javax.swing.JApplet;
    import javax.swing.JButton;
     
    public class testjava extends JApplet {
     
       private javax.swing.JPanel jContentPane = null;
       private javax.swing.JButton classebouton = null;
    Ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    package Test;
     
    import javax.swing.JApplet;
    import javax.swing.JButton;
     
    public class testjava extends JApplet {
     
       private JPanel jContentPane = null;
       private JButton classebouton = null;
    C'est plus lisible et moins fatiguant pour tes doigts et ton clavier
    Bon Java !

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merci ça fonctionne.

    En fait, j'aurais du définir mes intance de type toto comme celà je n'ai pas à refaire le cast constamment.

    Gilles.

  5. #5
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    En effet c'est mieux. Déclarer la variable comme JButton n'a de l'intérêt que si elle va recevoir des classes de types différents mais héritant tous de JButton.

    Pense au bouton résolu

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2010, 23h35
  2. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  3. Réponses: 6
    Dernier message: 09/07/2007, 13h49
  4. [VB6] générer un recordset qui n'est pas lier à un bdd
    Par damyrid dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/06/2003, 17h48
  5. Index n'est pas a jour
    Par touhami dans le forum Paradox
    Réponses: 5
    Dernier message: 11/12/2002, 14h47

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