Fehler: The method getKlausurInfo(int) is undefine

Hallo,
ich bin dabei, ein Verwaltungssystem für Klausuren zu programmieren. Nun bin ich bei der Menüzeile bei und habe einen Reiter „Datei“ mit den Unterpunkten fertig. Nun wollte ich einen zweiten Reiter „Bearbeiten“ hinzufügen mit den Punkten „Neue Klausur“ und „Entfernen“ erstellen. Eclipse gibt jedoch drei Mal an unterschiedlichen Stellen: „The method getKlausurInfo(int) is undefined for the type ButtonModel“ aus. Leider kann ich nicht verstehen, was mir diese Fehlermeldung sagen soll?

Hier der Ausschnitt, die Zeile der Fehlermeldung ist FETT:
class NeuItem extends JMenuItem implements ActionListener
{
public NeuItem ()
{
super („Neue Klausur hinzufügen…“);
addActionListener (this);
}

public void actionPerformed(ActionEvent event)
{
// Neues KlausurInfo-Objekt erzeugen:
KlausurInfo k = new KlausurInfo();

// Dialog zum Bearbeiten des neuen Objekts zeigen:
KlausurInfoDialog kid = new KlausurInfoDialog(kid, k);

if (kid.closedOK)
{
// Model-Komponente mit neu erstelltem Eintrag aktualisieren:
model.addKlausur (k);

// Formular mit geänderten/neuen Daten aktualisieren:
initFromModel();
}
}

Vorab schonmal für mögliche Hilfestellungen.

Beste Grüße

Hallo,

Eclipse gibt
jedoch drei Mal an unterschiedlichen Stellen: „The method
getKlausurInfo(int) is undefined for the type ButtonModel“
aus. Leider kann ich nicht verstehen, was mir diese
Fehlermeldung sagen soll?

Das bedeutet, die Klasse (bzw. das Interface) ButtonModel kennt keine Methode getKlausurInfo(int).

> // Model-Komponente mit neu erstelltem Eintrag aktualisieren:  
> **model.addKlausur (k);**

Hast du model evtl. in etwa so initialisiert:

ButtonModel model = new CustomButtonModel();

ButtonModel ist ein Interface, du muss also eine Klasse haben, die dieses Interface implementiert und die vermutlich auch die Methden addKlausur und addKlausurInfo besitzt. Wenn die Variable model jedoch als ButtonModel definiert wurde und nicht als die implementierende Klasse sind diese Methoden dem Kompiler unbekannt.

CustomButtonModel model = new CustomButtonModel();

sollte dagegen funktionieren.

HTH
Heavy

Danke für die fixe Antwort, aber irgendwie funktioniert auch dies bei mir nicht:

Ich habe model vorher als „private Klausur model;“ deklariert. model bezeichnet bei mir ein package, indem die gesamten Klausurdaten gespeichert werden. Ind dem package sind mehrere Klassen enthalten.

Ich habe beim Programmieren bloß die Codes kopiert, die ich bereits als Buttons verwendet habe. Dass heißt, ich habe zuerst Schlatflächen programmiert, die wunderbar mit dem Code funktionieren. Später habe ich die Codes der Schaltflächen nur in die Menübar kopiert. Nun diese Fehlermeldung…

Liegt es vielleicht an dem Duplikat?

Ich habe model vorher als „private Klausur model;“ deklariert.
model bezeichnet bei mir ein package, indem die gesamten
Klausurdaten gespeichert werden. Ind dem package sind mehrere
Klassen enthalten.

Äh, kann sein, dass du auch ein Package namens model hast,

private Klausur model;

definiert jedoch eine Variable vom Typ Klausur. Hat die Klasse Klausur eine Methode addKlausur(KlausurInfo) und ist diese public?

Gruß
Heavy

ja, das trifft alles zu. das package heißt „klausurverwaltung.model“ und die klasse klausur besitzt:

/**
* Eine neue Klausur in die Liste einfügen.
*/
public void addKlausur (KlausurInfo k)
{
klausurList.add (k);
}

ja, das trifft alles zu. das package heißt
„klausurverwaltung.model“ und die klasse klausur besitzt:

/**
* Eine neue Klausur in die Liste einfügen.
*/
public void addKlausur (KlausurInfo k)
{
klausurList.add (k);
}

Dann scheint die Variable model bei der die Fehlermeldung angezeigt wird nicht die selbe zu sein die du als Klausur definiert hast. Oder Eclipse hat das noch nicht geschnallt und die angezeigt Fehlermeldung ist eigentlich gar nicht mehr aktuell. Das hatte ich auch schon einige Male.

Kannst du mal die komplette Klasse NeuItem posten?

Gruß
Heavy

einmal die Klasse

class NeuItem extends JMenuItem implements ActionListener
{
public NeuItem ()
{
super („Neue Klausur erstellen“);
addActionListener (this);
}

public void actionPerformed(ActionEvent e)
{
// Neues KlausurInfo-Objekt erzeugen:
KlausurInfo k = new KlausurInfo();
// Dialog zum Bearbeiten des neuen Objekts zeigen:
//KlausurInfoDialog kid = new KlausurInfoDialog(kid, k);

//if (kid.closedOK)
{
// Model-Komponente mit neu erstelltem Eintrag aktualisieren:
//model.addKlausur (k);
// Formular mit geänderten/neuen Daten aktualisieren:
initFromModel();
}
}
}