Variablen Cannot make a static reference to the non-static field time

Kawaii

Mitglied
Huhu,
bin Studentin im ersten Semester und habe eine Abgabe zu Montag bei der ich nicht weiterkomme.
Bekomme die wie im Titel beschriebene Fehlermeldung.
Aufgabe ist es einen Zähler einzubauen der jedesmal wenn actionPerformed() aufgerufen wird, den Zähler um 1 zu erhöhen.
Der Dirtypainter2 soll dann einen Marker zeichnen (dieser funktioniert schon) auf der position (x*time,y).:noe:

Ich weiß nicht wie ich das machen soll, dass der timer hochzählt und in den Marker den neuen Wert reinpackt ;(
Java:
package pr1.a07;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

import dirty.graphics2.DirtyPainter2;


public class BasicAnimationController extends TimerTriggeredKonsolePrinter implements ActionListener {
	int time = 0;
	public static void main(String[] args) {
		int time = 0;
		BasicAnimationController controller = new BasicAnimationController();
		Timer timer = new Timer(1000, controller);
		timer.start();
		Marker a = new Marker(50 * time, 100);
		DirtyPainter2 zeichner = new DirtyPainter2();
		zeichner.add(a);
		zeichner.showDrawing();
		
	}
	
	public void actionPerformed(ActionEvent e){
		System.out.println("Zeitimpuls");
		this.time ++;
	}
}
 
Zuletzt bearbeitet:
Genau das habe ich auch schon gemacht und keine Lösung gefunden...
Steht nicht umsondt da, dass ich im ersten Semester bin. Das sind alles Hieroglyphen...
 
Erstaunt dich vielleicht die aggresive Antwort von Marcinek ... aber das ist wirklcih eine häufige Frage. Wobei die Antwort zu verstehen gar nicht so leicht ist ;-) Aber dafür um so wichtiger.

Alles was static ist bezieht sich auf die Klasse, alles was nicht static auf das instanz Objekt.
Also static -> bezieht sich auf Hund
nicht static -> bezieht sich auf Bello

Bello kann dinge von Hund aufrugen. Hund aber nix von Bello...
 
Du hast zwei mal time definiert. Entweder du machst das in der main weg und machst das über der main static
Code:
static int time = 0;
oder du machst das über der main einfach weg..

edit: ach du brauchst die Variable ja unten. Dann musst du es in der main wegmachen, ka warum du es da überhaupt nochmal hingeschrieben hast..
 
Zuletzt bearbeitet:
mal davon das du da shadowing verwendest *das "int time" innerhalb der main verdeckt den zugriff auf die klassenvariable "int time" außerhalb der main* sehe ich auch nirgends wo du den ActionListener addesd ...

allgemein wird das eh schwer wenn du im static kontext von main arbeitest ...

versuche mal eine instanz zu erzeugen ... also innerhalb von main sowas hier

Java:
BasicAnimationController basicAnimationController=new BasicAnimationController();

und natürlich einen entsprechenden konstruktor erstellen ...


was google angeht : "java ist auch eine insel" ... geeignet für anfänger ... zieh dir das mal lieber rein ...
 

Zurück
Oben