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

avec Java Discussion :

Erreur "Cannot use this in a static context"


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Erreur "Cannot use this in a static context"
    Bonjour à tous ; je débute sous Java avec l'aide du tutoriel "Java pour les enfants". Je suis pas à pas ce tutoriel mais j'ai un problème avec la classe CalculatriceSimple implémentée dans le tutoriel.

    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
     
    import javax.swing.*;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.BorderLayout;
     
    public class CalculatriceSimple {
    	public static void main(String[] args){
    		// Crée un panneau
    		JPanel contenuFenetre=new JPanel();
     
    		// Affecte un gestionnaire de disposition à ce panneau
    		FlowLayout disposition=new FlowLayout();
    		this.setLayoutManager(disposition);
     
     
    		// Crée les contrôles en mémoire
    		JLabel label1=new JLabel("Nombre 1 :");
    		JTextField entree1=new JTextField(10);
    		JLabel label2=new JLabel("Nombre 2:");
    		JTextField entree2=new JTextField(10);
    		JLabel label3=new JLabel("Somme :");
    		JTextField resultat = new JTextField(10);
    		JButton lancer=new JButton("Ajouter");
     
    		// Ajoute les contrôles au panneau
    		contenuFenetre.add(label1);
    		contenuFenetre.add(entree1);
    		contenuFenetre.add(label2);
    		contenuFenetre.add(entree2);
    		contenuFenetre.add(label3);
    		contenuFenetre.add(resultat);
    		contenuFenetre.add(lancer);
     
    		// Crée le cadre et y ajoute le panneau
    		JFrame cadre=new JFrame("Ma première calculatrice");
    		cadre.setContentPane(contenuFenetre);
     
    		// Positionne les dimensions et rend la fenêtre visible
    		cadre.setSize(400,100);
    		cadre.setVisible(true);
     
    	}
     
    }

    L'erreur se situe au niveau de la ligne contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setLayoutManager(disposition);
    et le message d'erreur est : Cannot use this in a static context.

    Merci d'avance à qui pourra me débloquer.

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par sducos81 Voir le message
    Bonjour à tous ; je débute sous Java avec l'aide du tutoriel "Java pour les enfants". Je suis pas à pas ce tutoriel mais j'ai un problème avec la classe CalculatriceSimple implémentée dans le tutoriel.

    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
     
    import javax.swing.*;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.BorderLayout;
     
    public class CalculatriceSimple {
        public static void main(String[] args){
            // Crée un panneau
            JPanel contenuFenetre=new JPanel();
     
            // Affecte un gestionnaire de disposition à ce panneau
            FlowLayout disposition=new FlowLayout();
            this.setLayoutManager(disposition);
     
     
            // Crée les contrôles en mémoire
            JLabel label1=new JLabel("Nombre 1 :");
            JTextField entree1=new JTextField(10);
            JLabel label2=new JLabel("Nombre 2:");
            JTextField entree2=new JTextField(10);
            JLabel label3=new JLabel("Somme :");
            JTextField resultat = new JTextField(10);
            JButton lancer=new JButton("Ajouter");
     
            // Ajoute les contrôles au panneau
            contenuFenetre.add(label1);
            contenuFenetre.add(entree1);
            contenuFenetre.add(label2);
            contenuFenetre.add(entree2);
            contenuFenetre.add(label3);
            contenuFenetre.add(resultat);
            contenuFenetre.add(lancer);
     
            // Crée le cadre et y ajoute le panneau
            JFrame cadre=new JFrame("Ma première calculatrice");
            cadre.setContentPane(contenuFenetre);
     
            // Positionne les dimensions et rend la fenêtre visible
            cadre.setSize(400,100);
            cadre.setVisible(true);
     
        }
     
    }
    L'erreur se situe au niveau de la ligne contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setLayoutManager(disposition);
    et le message d'erreur est : Cannot use this in a static context.

    Merci d'avance à qui pourra me débloquer.
    salut.
    tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenuFenetre.setLayoutManager(disposition);

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse slim_java ; le soucis à présent est que j'ai ce nouveau message d'erreur, toujours au même niveau du programme :

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method setLayoutManager(FlowLayout) is undefined for the type JPanel

    at CalculatriceSimple.main(CalculatriceSimple.java:14)



  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Lis bien le paragraphe accompagnant le code que tu as copié, c'est ici, cette methode doit exister dans la classe CalculatriceSimple que tu n'as pas acutellement. Essaie ca , ca marchera mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenuFenetre.setLayout(disposition);
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par sducos81 Voir le message
    Merci pour ta réponse slim_java ; le soucis à présent est que j'ai ce nouveau message d'erreur, toujours au même niveau du programme :

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method setLayoutManager(FlowLayout) is undefined for the type JPanel

    at CalculatriceSimple.main(CalculatriceSimple.java:14)


    salut.

    fait plutôt un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenuFenetre.setLayout(disposition);

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci encore pour les conseils. J'ai continué à parcourir le tutoriel et je bloque à nouveau...

    J'ai mon fichier Calculatrice.java contenant désormais le code suivant :
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    import javax.swing.*;
    import java.awt.GridLayout;
    import java.awt.BorderLayout;
     
     
    public class Calculatrice {
    	JPanel contenuFenetre;
    	JTextField champAffichage;
    	JButton bouton0;
    	JButton bouton1;
    	JButton bouton2;
    	JButton bouton3;
    	JButton bouton4;
    	JButton bouton5;
    	JButton bouton6;
    	JButton bouton7;
    	JButton bouton8;
    	JButton bouton9;
    	JButton boutonVirgule;
    	JButton boutonEgale;
    	JPanel panneauChiffres;
     
     
    	/* Le contructeur crée les composants en mémoire et les ajoute au cadre
    	 * en utilisant une combinaison de BorderLayout et GridLayout
    	 */
    	Calculatrice(){
    		contenuFenetre=new JPanel();
     
    		// Affecte un gestionnaire de présentation à ce panneau
    		BorderLayout disposition1=new BorderLayout();
    		contenuFenetre.setLayout(disposition1);
     
    		// Crée le champ d'affichage et le positionne dans la zone Nord de la fenêtre
    		champAffichage=new JTextField(30);
    		contenuFenetre.add("North",champAffichage);
     
    		// Crée les boutons à partir du constructeur de la classe JButton
    		// qui prend en paramètre le libellé du bouton
     
    		bouton0=new JButton("0");
    		bouton1=new JButton("1");
    		bouton2=new JButton("2");
    		bouton3=new JButton("3");
    		bouton4=new JButton("4");
    		bouton5=new JButton("5");
    		bouton6=new JButton("6");
    		bouton7=new JButton("7");
    		bouton8=new JButton("8");
    		bouton9=new JButton("9");
    		boutonVirgule=new JButton(",");
    		boutonEgale=new JButton("=");
     
     
    		// Crée le panneau avec le quadrillage qui contient les 12 boutons
    		panneauChiffres=new JPanel();
    		GridLayout disposition2=new GridLayout(4,3);
     
    		// Ajoute les contrôles au panneauChiffres
    		panneauChiffres.add(bouton1);
    		panneauChiffres.add(bouton2);
    		panneauChiffres.add(bouton3);
    		panneauChiffres.add(bouton4);
    		panneauChiffres.add(bouton5);
    		panneauChiffres.add(bouton6);
    		panneauChiffres.add(bouton7);
    		panneauChiffres.add(bouton8);
    		panneauChiffres.add(bouton9);
    		panneauChiffres.add(bouton0);
    		panneauChiffres.add(boutonVirgule);
    		panneauChiffres.add(boutonEgale);
     
    		// Ajoute panneauChiffres à la zone centrale de la fenêtre
    		contenuFenetre.add("Center",panneauChiffres);
     
    		// Crée le cadre et lui affecte son contenu
    		JFrame frame=new JFrame("Calculatrice");
    		frame.setContentPane(contenuFenetre);
     
    		// Affecte à la fenêtre des dimensions suffisantes 
    		// pour prendre en compte tous les contrôles
    		frame.pack();
     
    		// Affiche la fenêtre
    		frame.setVisible(true);
     
    		MoteurCalcul moteurCalcul=newMoteurCalcul(); // erreur à ce niveau
    		bouton0.addActionListener(moteurCalcul);
     
    	}
     
     
    	public static void main(String[] args) {
    		Calculatrice calc = new Calculatrice();
    		}
     
    }
    Et j'ai également un fichier MoteurCalcul.java contenant le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import javax.swing.JOptionPane;
     
    public class MoteurCalcul implements ActionListener{
    	public void actionPerformed(ActionEvent evenement){
    		JOptionPane.showConfirmDialog(null, "Quelque chose s'est produit","Juste un test",JOptionPane.PLAIN_MESSAGE);
    	}
     
    }
    Le message d'erreur qui s'affiche au niveau de MoteurCalcul moteurCalcul=newMoteurCalcul(); est le suivant :

    The method newMoteurCalcul() is undefined for the type Calculatrice

    at Calculatrice.<init>(Calculatrice.java:88)
    at Calculatrice.main(Calculatrice.java:95)


    Quelqu'un peut-il m'aider please ?

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par sducos81 Voir le message
    J'ai continué à parcourir le tutoriel
    bon courage

    Citation Envoyé par sducos81 Voir le message
    [/code]
    Le message d'erreur qui s'affiche au niveau de
    MoteurCalcul moteurCalcul=newMoteurCalcul(); est le suivant :
    ici il faut faire un espace entre new et MoteurCalcul

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci bien slim_java c'est vraiment une erreur de débutant

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par sducos81 Voir le message
    Merci bien slim_java c'est vraiment une erreur de débutant
    tinquiète pas

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/02/2015, 10h27
  2. Erreur "non-static Objet cannot be referenced by a static context"
    Par JeanNoel53 dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 01/01/2012, 12h52
  3. [FOP] [ERROR] non-static variable this cannot be referenced from a static context
    Par cash3000 dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/05/2006, 16h46
  4. Erreur : cannot be referenced from a static context
    Par Belegkarnil dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2005, 07h24
  5. Réponses: 3
    Dernier message: 05/12/2005, 10h27

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