Bug introuvable

cs_Bouki Messages postés 43 Date d'inscription vendredi 30 août 2002 Statut Membre Dernière intervention 11 décembre 2004 - 22 août 2003 à 10:58
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 - 22 août 2003 à 13:01
Salut,
Voilà g un pb avec ce code (3fichiers) que je ne comprend pas et que je n'arrive pas à résoudre.
Si quelqu'un peut m'aider...

Fichier Ecouteur.java (non compilé)
___________________________________

import java.awt.event.*; //on importe le gestionnaire d'évènements

public class Ecouteur extends Fenetre implements ActionListener //on définit une classe dérivée de celle d'écoute standart
{
Fenetre Nouvelle_fenetre;

Ecouteur(Fenetre Recu)
{Nouvelle_fenetre = Recu;}

public void actionPerformed(ActionEvent Action_survenue) //on est OBLIGE de mettre ce nom à nôtre méthode
{
if (Action_survenue.getSource() == Nouvelle_fenetre.Bouton_1) //si le bouton 1 est touché
{Nouvelle_fenetre.Zone_de_texte.setText("Vous avez appuyé sur oui");} //on change le texte de la fenêtre en ça
if (Action_survenue.getSource() == Nouvelle_fenetre.Bouton_2) //si c'est le bouton 2
{Nouvelle_fenetre.Zone_de_texte.setText("Vous avez appuyé sur non");} //pareil
}
}

Erreur de compilation :

Ecouteur.java [8:1] cannot resolve symbol
symbol : constructor Fenetre ()
location: class Fenetre
{Nouvelle_fenetre = Recu;}

Fichier Fenetre.java
___________________

import java.awt.event.*; //on importe le gestionnaire d'évènements
import java.awt.*; //on importe les objets d'interface graphique awt
import javax.swing.*; //pareil mais pour les swing

public class Fenetre extends JFrame//on défini une classe dérivée de celle fournie dans nôtre package
{
public JButton Bouton_1;
public JButton Bouton_2;
public JLabel Zone_de_texte;

public Fenetre(String Titre) //nôtre constructeur de fenêtre qui prend le titre de la fenêtre
{
setTitle(Titre); //on définit le titre de la fenetre
Container Contenu = getContentPane(); //on définit nôtre 'conteneur' d'éléments de l'interface
JPanel Conteneur_boutons = new JPanel(); //on définit un panneau qui contiendra les boutons
Conteneur_boutons.setLayout(new FlowLayout()); //on lui donne un affichage des objets standart (FlowLayout)
Bouton_1 = new JButton("Oui"); //on définis le texte de nôtre bouton ainsi que le bouton lui-même
Bouton_2 = new JButton("Non"); //on définis le texte de nôtre bouton ainsi que le bouton lui-même
Ecouteur Evenement_ecoute = new Ecouteur(this); //on écoute cette classe
Bouton_1.addActionListener(Evenement_ecoute); //on écoute le bouton 1
Bouton_2.addActionListener(Evenement_ecoute); //le bouton 2 aussi
Conteneur_boutons.add(Bouton_1); //on l'ajoute au conteneur de boutons
Conteneur_boutons.add(Bouton_2); //on l'ajoute au conteneur de boutons
Contenu.add(Conteneur_boutons, BorderLayout.CENTER); //on ajoute nôtre conteneur de boutons
Zone_de_texte = new JLabel("Vous n'avez encore cliqué sur rien"); //on définit une zone de texte
Contenu.add(Zone_de_texte, BorderLayout.SOUTH); //on ajoute cette zone en bas (à gauche)
setSize(500, 250); //on définit la taille de la fenêtre
setVisible(true); //on la fait devenir visible
}
}

Erreur :
java.lang.NoSuchMethodError: main
Exception in thread "main" 

Fichier Test.java
_________________

public class Test
{
public static void main(String[] args) //rien de difficile lol
{Fenetre Essai = new Fenetre("Essai évènements");} //on construit nôtre fenêtre avec pour titre "Essai du titre"
}

Erreur :
java.lang.NoSuchMethodError: Fenetre: method (Ljava/lang/String;)V not found
at Test.main(Test.java:4)
Exception in thread "main"

Voilà, seul Ecouteur.java est pas compile, please help me !

5 réponses

cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
22 août 2003 à 11:44
Salut

je comprends pas pourquoi ta classe Ecouteur est extends Fenetre.
Je l'ai viré et ca se compile tout seul après!
si tu as une classe dérivée, il faut obligatoirement dans son constructeur appeler le constructeur de la classe de base.
d'où le message d'erreur de la classe Ecouteur qui voulait le constructeur de Fenetre

DOBELIOU
0
cs_Bouki Messages postés 43 Date d'inscription vendredi 30 août 2002 Statut Membre Dernière intervention 11 décembre 2004
22 août 2003 à 11:48
parcequ'elle utilise les objets de l'interface graohique de la classe Fenetre, j'ai viré l'extends Fenetre mais maintenant il reconnait pas les objets que j'apelle :s
Perso j'utilise sun one sutdio 4 update 1 community edition.

Ecouteur.java [12:1] cannot resolve symbol
symbol : variable Bouton_1
location: class Fenetre
if (Action_survenue.getSource() == Nouvelle_fenetre.Bouton_1) //si le bouton 1 est touché
^
Ecouteur.java [13:1] cannot resolve symbol
symbol : variable Zone_de_texte
location: class Fenetre
{Nouvelle_fenetre.Zone_de_texte.setText("Vous avez appuyé sur oui");} //on change le texte de la fenêtre en ça
^
Ecouteur.java [14:1] cannot resolve symbol
symbol : variable Bouton_2
location: class Fenetre
if (Action_survenue.getSource() == Nouvelle_fenetre.Bouton_2) //si c'est le bouton 2
^
Ecouteur.java [15:1] cannot resolve symbol
symbol : variable Zone_de_texte
location: class Fenetre
{Nouvelle_fenetre.Zone_de_texte.setText("Vous avez appuyé sur non");} //pareil
^
4 errors
Errors compiling class Ecouteur.
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 12:01
je l ai teste aussi apres avoir viré l heritage de Fenetre et ca marche
mais pour plus de simplicité je te conseille de faire de ta fenetre l objet ecouteur des boutons ainsi tu n auras pas de probleme d acces, je l ai modifié un peu et ca donne ca:

import java.awt.event.*; //on importe le gestionnaire d'évènements
import java.awt.*; //on importe les objets d'interface graphique awt
import javax.swing.*; //pareil mais pour les swing

public class Fenetre extends JFrame implements ActionListener//on défini une classe dérivée de celle fournie dans nôtre package
{
public JButton Bouton_1;
public JButton Bouton_2;
public JLabel Zone_de_texte;

public Fenetre(String Titre) //nôtre constructeur de fenêtre qui prend le titre de la fenêtre
{
setTitle(Titre); //on définit le titre de la fenetre
Container Contenu = getContentPane(); //on définit nôtre 'conteneur' d'éléments de l'interface
JPanel Conteneur_boutons = new JPanel(); //on définit un panneau qui contiendra les boutons
Conteneur_boutons.setLayout(new FlowLayout()); //on lui donne un affichage des objets standart (FlowLayout)
Bouton_1 = new JButton("Oui"); //on définis le texte de nôtre bouton ainsi que le bouton lui-même
Bouton_2 = new JButton("Non"); //on définis le texte de nôtre bouton ainsi que le bouton lui-même

Bouton_1.addActionListener(this); //on écoute le bouton 1
Bouton_1.setActionCommand("oui");
Bouton_2.addActionListener(this); //le bouton 2 aussi
Bouton_2.setActionCommand("non");
Conteneur_boutons.add(Bouton_1); //on l'ajoute au conteneur de boutons
Conteneur_boutons.add(Bouton_2); //on l'ajoute au conteneur de boutons
Contenu.add(Conteneur_boutons, BorderLayout.CENTER); //on ajoute nôtre conteneur de boutons
Zone_de_texte = new JLabel("Vous n'avez encore cliqué sur rien"); //on définit une zone de texte
Contenu.add(Zone_de_texte, BorderLayout.SOUTH); //on ajoute cette zone en bas (à gauche)
setSize(500, 250); //on définit la taille de la fenêtre
setVisible(true); //on la fait devenir visible
}

public void actionPerformed(ActionEvent Action_survenue) //on est OBLIGE de mettre ce nom à nôtre méthode
{
String commande = Action_survenue.getActionCommand();
if (commande.equals("oui")) //si le bouton 1 est touché
{Zone_de_texte.setText("Vous avez appuyé sur oui");} //on change le texte de la fenêtre en ça
if (commande.equals("non")) //si c'est le bouton 2
{Zone_de_texte.setText("Vous avez appuyé sur non");} //pareil
}
}


benohite
:big)
0
cs_Bouki Messages postés 43 Date d'inscription vendredi 30 août 2002 Statut Membre Dernière intervention 11 décembre 2004
22 août 2003 à 12:13
j'ai fait un c/c de ton code-source, ca se compile mais toujours des exceptions lors de l'execution :
pour Fenetre.java c'est :
java.lang.NoSuchMethodError: main
Exception in thread "main"

et pour le fichier Test.java qui apelle la méthode fenetre il ne se compile plus et me fait un :

Test.java [4:1] cannot resolve symbol
symbol : constructor Fenetre (java.lang.String)
location: class Fenetre
{Fenetre Essai = new Fenetre("Essai évènements");} //on construit nôtre fenêtre avec pour titre "Essai du titre"
^
1 error

alors là j'y comprend rien :s dsl
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
22 août 2003 à 13:01
le programme est correct, c est un pb de contexte, c est a dire que la jvm ne trouve pas la classe fenetre
essaye de lui specifier un package que tu appelleras dans ton programme Test ou alors mets dans ta variable classepath en dernier un . ainsi la jvm cherchera dans le meme dossier que la classe Test et trouvera donc la classe fenetre

benohite
:big)
0
Rejoignez-nous