Methode soll andere Methode der selben Klasse aufrufen

cannot make a static reference to a non static field
Und die Lösung ist die selbe, wie bei den vergangenen 500-mal: Du brauchst ein Objekt. Bei dem Code, den Du eben gezeigt hast, sollte der Fehler aber nicht auftreten, wenn Du keine Schweinereien (Schafereien) bei den Klassennamen gemacht hast.

Prinzipiell musst Du die wait()-Methode natürlich in Head implementieren, wenn beide Augen "gleichzeitig" geschlossen werden sollen.

Viel mehr würde mich interessieren, warum bei Dir ein Auge ein linkes und ein rechtes Augenlid besitzt... Malst Du zwei Striche, das Auge also so: /o\ ?
 
Die Objekte sind doch leftEyeLid und rightEyeLid?
Ich habe doch geschrieben, dass der Fehler bei diesem Code nicht auftreten dürfte. Wenn leftEye und rightEye sowie leftEyeLid und rightEyeLid Instanz-Variablen und keine Klassen sind, dann gibt es dort auch keine statische Referenz.

nein es ist ein Augenlid für jedes Auge.
Dein Code sagt etwas anderes. In der Klasse Eye hast Du
Java:
    void closeEyeLid() {
       leftEyeLid.draw();
       rightEyeLid.draw();
    }
Da ein Obekt der Klasse Eye aber ein einziges Auge darstellt, hätte dieses eine Auge zwei Augenlider.
 
leftEye und rightEye werden hier erzeugt:
Java:
       leftEye = new Eye(10+xPos, 31+yPos, Colour.BLACK);
       rightEye = new Eye(50+xPos, 31+yPos, Colour.BLACK);
anhand des Konstruktors:
Java:
    Eye(int x, int y,Colour initialColour) {
        xPos = x;
        yPos = y;
        colour = initialColour;
        
        iris = new Ellipse(20, 20, xPos, yPos, Colour.BLACK);
        pupil = new Ellipse(8, 8,6 + xPos,7 + yPos, Colour.WHITE);
        rightEyeLid = new Ellipse(20, 20, xPos, yPos-3, Colour.GREEN);
        leftEyeLid = new Ellipse(20, 20 , xPos, yPos-3, Colour.GREEN);
}
 
Ok, ich glaub ich sehe es jetzt. Ich erzeuge mit jedem Auge beide Augenliedider! Man könnte jetzt beide Augen in einem Objekt erzeugen aber dann kann ich nicht ein Auge zwinkern lassen.
 
Java:
        rightEyeLid = new Ellipse(20, 20, xPos, yPos-3, Colour.GREEN);
        leftEyeLid = new Ellipse(20, 20 , xPos, yPos-3, Colour.GREEN);
Schau Dir doch die beiden Ellipsen an. Was unterscheidet die beiden Ellipsen?

Ok, ich glaub ich sehe es jetzt. Ich erzeuge mit jedem Auge beide Augenliedider! Man könnte jetzt beide Augen in einem Objekt erzeugen aber dann kann ich nicht ein Auge zwinkern lassen.
Nein. Du erzeugst nicht mit jedem Auge beide Augenlider. Wie sollte das auch gehen? Die Augenlider sind doch relativ zu der Position des Auges. Das eine Auge kennt doch die Position nicht vom zweiten Auge - also wie sollte es da das Augenlid der anderen Auges malen?

Aber spiel doch etwas damit rum. Mal mal nur ein Auge von beiden. Wäre es so, dass jedes Auge beide Augenlider malen würde, dann würdest Du das ja gut erkennen können ...
 
Java:
       leftEye = new Eye(10+xPos, 31+yPos, Colour.BLACK);
       rightEye = new Eye(50+xPos, 31+yPos, Colour.BLACK);
Java:
    Eye(int x, int y,Colour initialColour) {
        xPos = x;
        yPos = y;
        colour = initialColour;
        
        iris = new Ellipse(20, 20, xPos, yPos, Colour.BLACK);
        pupil = new Ellipse(8, 8,6 + xPos,7 + yPos, Colour.WHITE);
        eyeLid = new Ellipse(20, 20, xPos, yPos-3, Colour.GREEN);
Java:
    void closeEyeLid() {
        eyeLid.draw();
    }
so zeichne ich jetzt beide Augen. gibt es eine Möglichkeit bei der Erzeugung des Auges jedem eyeLid eine neue variable zuzuordnen damit ich die auch getrennt voneinander zeichnen kann? Oder muss ich für jedes Auge einen eigenen Konstruktor anlegen?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben