Simple Animation funktioniert nicht (JFrame, Canvas, Thread)

Status
Nicht offen für weitere Antworten.

mf4nky

Mitglied
Hallo zusammen!
Wir müssen in der Schule eine einfache Animation programmieren.

Nun habe ich im Internet nach Beispielen gesucht und diese ausprobiert. Funktioniert tiptop.
Diese sind allerdings als Applet programmiert.

Ich möchte nun aber ein Progrämmchen, welches auf JFrame basiert. Dort möchte ich eine Grafikfläche (Canvas) drüberlegen und die Animation dort drin ablaufen lassen.

Allerdings erhalte ich schon beim Anzeigen von einem Rechteck einen Fehler.

Code:
Exception in thread "Thread-2" java.lang.NullPointerException
	at steuerung_automat.Animation.anzeigen(Animation.java:35)
	at steuerung_automat.Animation.run(Animation.java:18)

Irgendwie hab ich den Durchblick nicht mehr. Kann mir jemand sagen, ob ich irgendwie einen Denkfehler gemacht habe oder wieso dass der Code so nicht funktioniert?

Hier mein Code (noch nicht vollständig):

Main.java
Code:
package steuerung_automat;

import javax.swing.JFrame;

public class Main {

    public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        Fenster app = new Fenster();
        app.setVisible(true);
    }

}

Fenster.java
Code:
package steuerung_automat;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class Fenster extends JFrame {

    Grafikfläche gfkFläche = null;
    Animation ani = null;
    
    Fenster() {
        super("Steuerungsautomat");
        setSize(500, 400);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	
        add(getGfkFläche());
	
        getAni();
        getAni().start();
    }
    
    public Grafikfläche getGfkFläche() {
        if (gfkFläche == null) {
            gfkFläche = new Grafikfläche();
        }
        return gfkFläche;
    }
    
    public Animation getAni() {
        if (ani == null) {
            ani = new Animation(getGfkFläche(), 0, 20);
        }
        return ani;
    }
}

Grafikfläche.java
Code:
package steuerung_automat;

import java.awt.Canvas;
import java.awt.Color;

public class Grafikfläche extends Canvas {

    Grafikfläche() {
        setBackground(Color.BLACK);
    }
}

Animation
Code:
package steuerung_automat;

import java.awt.*;

public class Animation extends Thread {

    Grafikfläche gfkFläche;
    int x = 0;
    int y = 0;
    
    Animation(Grafikfläche gfkFläche, int x, int y) {
        this.gfkFläche = gfkFläche;
        this.x = x;
        this.y = y;
    }
    
    public void run() {
        anzeigen();
	
        while(this.isInterrupted() == false) {
	    
            // Hier kommt später dann noch der Methodenaufruf "bewegen()" hin.
            // Diese Methode soll das Rechteck über den Bildschirm bewegen. 
	    
            try {
                sleep(1000);
            } catch (InterruptedException e) {
		
            }
        }
    }
    
    public void anzeigen() {
        Graphics g = gfkFläche.getGraphics();
        g.setColor(Color.RED);
        g.fillRect(x, y, 40, 25);
    }
    
    public void bewegen() {}
}

Besten Dank für eure Hilfe!

Gruss mf4nky
 

Wildcard

Top Contributor
Wo kommt nur immer dieses getGraphics her? Das ist falsch!
Davon abgesehen darfst du nur in einem Thread zeichnen und das ist der Event Dispatcher Thread.
Hier schonmal die Grundlagen:
http://www.java-forum.org/de/topic46550_zeichnen-swing-tutorial.html
Animation lässt sich mit einem Thread regeln der nichts anderes macht als in einer Schleife die Position von Objekt x zu verändern, repaint aufzurufen und anschließend kurz zu schlafen.
 

mf4nky

Mitglied
Wow, das ging ja rasend schnell!
Danke für die rasche Antwort.

Wildcard hat gesagt.:
Wo kommt nur immer dieses getGraphics her? Das ist falsch!
Dieses getGraphics steht so in einem Beispiel im Buch "jetzt lerne ich Java 5".

Wildcard hat gesagt.:
Ok, werde mir das mal zu Gemüte führen und dann entweder die Lösung präsentieren oder noch weitere Fragen stellen :D

Gruss mf4nky
 

Wildcard

Top Contributor
mf4nky hat gesagt.:
Dieses getGraphics steht so in einem Beispiel im Buch "jetzt lerne ich Java 5".
Tatsache? :shock:
Leider (oder Gott sei Dank?) besitze ich dieses Buch nicht und kann mich daher nicht davon überzeugen ob es dabei evtl. um eine Fullscreen Anwendung geht (bei der getGraphics Sinn machen kann), denn sonst würde ich den Verlag diesbezüglich anschreiben.
In einer normalen Fensteranwendung hat es jedenfalls nichts verloren.
 

mf4nky

Mitglied
Naja, was ich jetzt gerade gesehen habe:
Es ist ein Applet-Beispiel, würde es dann dort wiederum Sinn machen?

Wenn nicht, kann ich dir die etwa vier Seiten sonst mal scannen :)

Gruss mf4nky
 

mf4nky

Mitglied
Hallo zusammen
Sry, dass ich mich erst jetzt wieder melde.

Habe noch ein bisschen im Net und hier im Forum gesucht und folgender Beitrag hat mir weitergeholfen:
2D animieren aber wie?

Übrigens: Super Forum hier!

Vielen Dank an alle, Grüsse
mf4nky
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
S Simple Rechnung ist fehlerhaft! Java Basics - Anfänger-Themen 13
F Simple Verschluesselung Java Basics - Anfänger-Themen 2
T Erste Schritte Simple Programmbeispiele Java Basics - Anfänger-Themen 14
D Java - Simple Strings in .txt loggen. Java Basics - Anfänger-Themen 4
M Simple Date Format Java Basics - Anfänger-Themen 2
K "Simple" Rechnung in Java Java Basics - Anfänger-Themen 3
S Simple aber komplette Java Loesung von Emails. Java Basics - Anfänger-Themen 11
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
M Wieso funktioniert dieser simple Code nicht? Java Basics - Anfänger-Themen 9
nrg Eigene simple List-Klasse programmieren Java Basics - Anfänger-Themen 3
T Simple Enum Fragen Java Basics - Anfänger-Themen 6
J Simple Frage: Positive Zahlen zu Negativen machen. Java Basics - Anfänger-Themen 11
S 3 simple fragen Java Basics - Anfänger-Themen 6
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
G super operator und incompatible types, simple fehler Java Basics - Anfänger-Themen 8
J simple Frage zu synchronized Java Basics - Anfänger-Themen 4
T Ganz simple Konstruktoraufgabe Java Basics - Anfänger-Themen 3
G simple suche in java - mysql Java Basics - Anfänger-Themen 10
M Simple Java Basics - Anfänger-Themen 7
K Simple Frage zu Methoden und Rückgabewerte Java Basics - Anfänger-Themen 3
S Animation/links-rechts Java Basics - Anfänger-Themen 9
G Animation Timer Nano Time Java Basics - Anfänger-Themen 2
J Animation eines Körpers auf der schiefen Ebene Java Basics - Anfänger-Themen 11
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
D Animation JPanel Java Basics - Anfänger-Themen 1
WetWer Animation JLabel Java Basics - Anfänger-Themen 2
A Animation einer Zahnradpumpe Java Basics - Anfänger-Themen 6
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
K Möglichkeiten um eine einfache Animation darzustellen Java Basics - Anfänger-Themen 7
C Animation nur einmal durchführen Java Basics - Anfänger-Themen 3
N Bilderarray als animation ablaufen lassen?? Java Basics - Anfänger-Themen 6
G Threads SuM Class Animation Java Basics - Anfänger-Themen 13
J .gif Animation Java Basics - Anfänger-Themen 4
J Animation Java Basics - Anfänger-Themen 5
M Animation in einem Multiplayerspiel Java Basics - Anfänger-Themen 3
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
T Animation Java Basics - Anfänger-Themen 2
M Animation von Kreisen Java Basics - Anfänger-Themen 15
U Y-Animation Java Basics - Anfänger-Themen 3
K Animation: Ball fällt herunter Java Basics - Anfänger-Themen 2
G Zufalls Animation Java Basics - Anfänger-Themen 9
Luk10 einfach animation Java Basics - Anfänger-Themen 2
H Animation malen! Java Basics - Anfänger-Themen 2
S JTable mit Animation??? Java Basics - Anfänger-Themen 7
B Flash Animation SWF in Java absielen Java Basics - Anfänger-Themen 18
R Probleme mit Animation und der erstellung einer jar Datei. Java Basics - Anfänger-Themen 11
U Animation bleibt leer (weiß) Java Basics - Anfänger-Themen 5
T Animation übermalt panels Java Basics - Anfänger-Themen 6
S Desktop Animation Java Basics - Anfänger-Themen 15
T Abspeichern einer Animation in *.bmp Java Basics - Anfänger-Themen 12
K animation in applet, thread problem (?) Java Basics - Anfänger-Themen 3
K Animation warten lassen Java Basics - Anfänger-Themen 9
F Animation Java Basics - Anfänger-Themen 3
J Animation Java Basics - Anfänger-Themen 2
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben