Rechercher : dans
Par :

Methode statique erreur JAVA

Dernière réponse le 5 mai 2009 à 12:17:56 didy_gwatinik, le 5 mai 2009 à 11:04:20 
 Signaler ce message aux modérateurs

Bonjour,
Je suis sur un projet de gestion de prêts en JAVA, je débute totalement!!
Je voudrai appeler une méthode de ma classe TabLivre mais cela ne marche pas, j'ai l'erreur suivante : Cannot make a static reference to the non-static method.Je n'ai aucune méthode statique hormis le main et ce n'est pas le main qui appelle ma méthode donc je ne comprends pas. Si quelqu'un pouvait m'aider, voilà mon code :
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == Ajouter)
{
String ISBN, Titre, Auteur, Pages, Image, Category, Resume;
System.out.println("Ajouter un livre");
ISBN = ISBNT.getText();
Titre = TitreT.getText();
Auteur = AuteurT.getText();
Pages = PagesT.getText();
Category = PagesT.getText();
Resume = resumeT.getText();
Image = ImageT.getText();
Livre livre = new Livre(ISBN, Titre, Auteur, Pages, Category, Resume, Image);
TabLivre.ajouter(livre); //renvoie l'erreur
}
}

Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « Methode statique erreur JAVA » dans :
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java: Les méthodes VoirLa notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...
Java - Les exceptions VoirLa nécessité de détecter les erreurs Tout programme comporte des erreurs, même si celui-ci semble fonctionner à merveille. Chaque programmeur essaye de réduire au minimum le nombre d'erreurs, mais toutes les erreurs ne peuvent pas forcément être...

1

sandul, le 5 mai 2009 à 12:02:11

Salut,

TabLivre.ajouter(livre)
serait approprié si et seulement si la méthode ajouter était statique dans la classe TabLivre (ce n'est probablement pas le cas). Le fragment de code exposé ne me permet pas de voir la définition de TabLivre, mais tu devrais peut-être faire qqchose du genre
TabLivre tabLivre = new TabLivre();
tabLivre.ajouter(livre);
Il est aussi bien de respecter les conventions de nommage Java (première lettre majuscule pour le nom d'une classe et minuscule pour une instance).

++

Répondre à sandul

2

didy_gwatinik, le 5 mai 2009 à 12:06:37

Oui, en effet, je n'ai plus d'erreur comme ça: merci! Le problème est qu'à chaque appel de ma méthode, le constructeur va être appelé et tout ce que j'ai dans mon tableau va disparaitre, comment faire ? Voilà ma classe TabLivre :
public class TabLivre {
Livre monTabLivre[] = new Livre[20];
int nb;

public TabLivre(){
nb = 0;
}

public int getNb() {
return nb;
}

public void setNb(int nb) {
this.nb = nb;
}

public void ajouter(Livre monLivre){
//contenu
}

public Livre affiche(int i){
//contenu
}

public Livre afficheTout(int i){
//contenu
}

public void supprimer(String ISBN){
//contenu
}

public void modifier(String ISBN){
//contenu
}
}

Répondre à didy_gwatinik

3

sandul, le 5 mai 2009 à 12:16:07

Ben dans ton programme tu conserves une variable avec l'instance de TabLivre et tu n'appeleras le constructeur qu'une seule fois.

Tu peux éventuellement créer une méthode

TabLivre getTabLivre() {
  if (tabLivre == null) {
    tabLivre = new TabLivre();
  }
  return tabLivre;
}
et déclarer tabLivre en tant que membre ailleurs (dans la classe contenant ton main(), par exemple). Par la suite, tu n'accèdes plus jamais tabLivre directement, mais uniquement via l'accesseur (la méthode get).

++

Répondre à sandul

4

 didy_gwatinik, le 5 mai 2009 à 12:17:56

Ah oui oui oui trés bonne idée Merci beaucoup!!

Répondre à didy_gwatinik