|
|
|
|
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
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). ++
|
Ben dans ton programme tu conserves une variable avec l'instance de TabLivre et tu n'appeleras le constructeur qu'une seule fois.
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).
++ |