Methode statique erreur JAVA

Résolu
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   -  
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   -
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
}
}
A voir également:

2 réponses

sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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).

++
0
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   80
 
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
}
}
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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).

++
0
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   80
 
Ah oui oui oui trés bonne idée Merci beaucoup!!
0