AWT AWT-EventQueue-0 Null_Pointer_Exception durch Variable

ToastIt

Mitglied
Hey ich wollte "ein" Array bzw die hinterlegten Arraywerte in einem GUI erzeugen.

So funktioniert es wunderbar:
Java:
public void render(Graphics2D g) {
        int y = 0;
        int x = 0;
        for(int z = 0; z < image.getWidth(); z += game.JClonk.blocksize ) {
            for (x=0; x < image.getWidth(); x += game.JClonk.blocksize) {
                block[x][0].render(g);
                block[x][5].render(g);
                block[x][10].render(g);
            }
            y += game.JClonk.blocksize;
            if((y < image.getHeight())) {
                   z = 0;  
            } else {
                    z = image.getWidth();
            }
        }
    }
// game.JClonk.blocksize = 5;
aber mit block[x][y].render(g); - wirft er mir diesen Fehlercode:

Was übersehe ich bei meiner y Variable?

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at world.World.render(World.java:30)
    at game.Playstate.render(Playstate.java:26)
    at game.GameStateManager.render(GameStateManager.java:22)
    at game.Game.paintComponent(Game.java:56)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager$4.run(Unknown Source)
    at javax.swing.RepaintManager$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.access$1200(Unknown Source)
    at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Das Script sollte im Endeffekt die blocks erzeugen in dem es erst das X immer wieder erhöht, anschließend einmal Y erhöht um dann wieder von vorn zu beginnen solange nicht das komplette Bild abgearbeitet ist(was dann über z realisiert wird/werden sollte).
 

ToastIt

Mitglied
Zeile 30 ist in dem Fall das Block Arrayblock[x][y].render(g);

und wenn ich mir x sowie y anzeigen lasse (in der for schleife)sieht alles gut aus.
z.b.
x: 5, 10, 15, 20
y: 0
x: 5, 10, 15, 20
y: 5
 

stg

Top Contributor
Die Frage ist nicht, was x und y für einen Wert haben, sondern ArrayBlock[x][y]
Du suchst also eine Ebene zu tief.
 

ToastIt

Mitglied
Wo befüllst du denn das Array?
hier mal das ganze Script der Klasse
Java:
package world;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;

import game.Block;
import game.Material;

public class World {
    private Block[][] block; //vorher feste Range vergeben?! eher suboptimal
    private BufferedImage image;
   
    public World() {
        loadWorld();
    }
   
    public void render(Graphics2D g) {   // erstelle Blöcke auf GUI
        int y = 0;
        int x = 0;
        while(x < image.getWidth()) {
            for (x=0; x < image.getWidth(); x += game.JClonk.blocksize) {
                block[x][y].render(g);
            }
            y += game.JClonk.blocksize;
           
            if((x >= image.getWidth()) && (y < image.getHeight())) {
                x = 0;   
            } else {
                x = image.getWidth();
            }
        }
    }
    public void loadWorld() { // Lade Image und wandel Farbe in Block um
        try {
            image = ImageIO.read(new File("res/landscape2.png"));
            int x = 0;
            int y = 0;
            while(x < image.getWidth()) {
                for (x=0; x <= image.getWidth(); x += game.JClonk.blocksize) {
                   
                    if((new Color(image.getRGB(x, y)).toString()).equals(new Color(127,127,127).toString())) {
                        block[x][y] = new Block(Material.values()[1], x, y, game.JClonk.blocksize, game.JClonk.blocksize);
                       
                    } else if((new Color(image.getRGB(x, y)).toString()).equals(new Color(0,162,232).toString())) {
                        //block[x][y] = new Block(Material.values()[0], x, y, game.JClonk.blocksize, game.JClonk.blocksize);

                    } else if((new Color(image.getRGB(x, y)).toString()).equals(new Color(0,200,0).toString())) {
                        //block[x][y] = new Block(Material.values()[2], x, y, game.JClonk.blocksize, game.JClonk.blocksize);
                    }
                }
                y += game.JClonk.blocksize;
               
                if((x >= image.getWidth()) && (y < image.getHeight())) {
                    x = 0;   
                } else {
                    x = image.getWidth();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ich könnte das auch ohne Arrays realisieren aber ich denke mit wäre schon sinnvoller ^^.
"new Block(Material.values()[0], x, y, game.JClonk.blocksize, game.JClonk.blocksize);" funktioniert erstmal grundsaätzlich ohne Probleme und erzeugt mir genug Blöcke ;)
 

InfectedBytes

Top Contributor
du erzeugst nur blöcke wenn die farbe grau ist (127,127,127). Falls es aber eine andere Farbe ist, machst du gar nichts und daher ist der Eintrag im Array null
 

ToastIt

Mitglied
Hab zwar noch eine andere Frage aber die stell ich gleich mit hier. Ich kann nun Grafiken bestimmter Größe benutzen. Wenn ich sie überschreite folgt ein "java.lang.ArrayIndexOutOfBoundsException:1000" --> Array erhöhen --> "Coordinate out of bounds!", nehme an dass das Array seine Grenzen hat.

Nun könnte ich statt 1Block direkt mehrere erstellen lassen, um trotz kleinem Bild eine größere Map zu erstellen. Oder ich splitte die Grafik(halte ich für keine gute Idee) oder ich ändere mein Array ab?!.

Was würdet ihr tun? Möchte nicht erst den falschen Weg einschlagen.
 

InfectedBytes

Top Contributor
Das Array ist eben genau so groß, wie du es ihm sagst. Daher solltest du es eben immer so groß erstellen wie nötig.
Ansonsten ist eigentlich deiner ganzer Ansatz eher schlecht gewählt. Du scheinst ein Spiel programmieren zu wollen und willst dafür swing/awt verwenden...schlechte Idee.
Grundsätzlich würde ich dir erstmal empfehlen dich grundsätzlich mehr mit Java zu befassen, bevor du versuchst ein Spiel zu programmieren. Ansonsten solltest du eben erst gar nicht versuchen das ganze mit Swing zu erstellen, sondern eben mit einem passenden Framework. Für Java bietet sich beispielsweise LibGDX an
 

ToastIt

Mitglied
Danke schonmal :),

Ja ich will ein kleines Game programmieren um Java besser zu verstehen und mir bringt es nichts stupide Java-Tutorials an zuwenden wenn ich dahinter kein Ziel sehe. Deswegen das Spiel. Um zu sehen wie weit ich komme, wo ich festhäng und was ich noch nicht begriffen hab. LibGDX? Kannte ich noch nicht, ist aber sicherlich sinnvoll, mächtig und hilfreich. Aber ist es sinnvoll für das erlernen von Java? Ich will auch das Rad nicht neu erfinden aber ich möchte halt gerne das gesamte Grundprinzip/-konzept verstehen(Methoden etc.) weshalb ich auch bis jetzt keine anderen game-engines/-libs verwende. Zudem muss man ja irgendwo anfangen^^, und mehrere Youtube-Tuts haben mich auch in die Richtung zu swing geschickt. Klar wenn ihr sagt, dass ich bei meinem 2D Game dann iwann an meine bzw. an javas Grenze komme macht dies auch keinen Sinn mehr und lasse mich gerne eines besseren belehren. ;)
 

InfectedBytes

Top Contributor
Problem ist halt auch das viele (die meisten?) YouTube Tutorials ziemlich mist sind. Oft ist es eben so das Leute die selbst kaum Ahnung haben meinen sie wären so gut das sie Tutorials machen können. Und daher findet man eben auch viel mist auf YouTube.
Um die Grundlagen von Java zu lernen kann man ruhig ein Spiel machen, aber dann besser eines ohne viel Grafik. Beispielsweise Textadventure oder irgendwelche Manager Spiele.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
D EventQueue im Logiksimulator Allgemeine Java-Themen 1
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2
H Unterschied EventQueue.invoke... und thread.start() Allgemeine Java-Themen 4
O "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBounds Allgemeine Java-Themen 6
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
8u3631984 Argument Captor liefert NULL zurück Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
J Zahlen Abstand zur Null bestimmen Allgemeine Java-Themen 11
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
S An internal error occurred during: Launching null argument Allgemeine Java-Themen 1
S Validation Null aber nicht Blank und muss Email sein Allgemeine Java-Themen 22
L Google Guice Field Injection returns null Allgemeine Java-Themen 2
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
N MsgPack - Null Check Allgemeine Java-Themen 5
T JasperReports mit Null Pointer Allgemeine Java-Themen 3
DanielsLPecke Compiler-Fehler Warum ist der String null? Allgemeine Java-Themen 10
M Warten bis Variabel nicht null ist Allgemeine Java-Themen 18
Thallius Simple JSON Parser Error null Allgemeine Java-Themen 6
M Null byte in verschiedenen charsets Allgemeine Java-Themen 2
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
B [Android] EditText-Object ist null - Nimmt nicht den Wert des enthaltenen Textfeldes ein Allgemeine Java-Themen 2
D Java Process OutputStream ist null Allgemeine Java-Themen 4
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
D Problem mit führender Null bei Schlüsselerzeugung Allgemeine Java-Themen 5
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
K Image beim catchen ist immer null Allgemeine Java-Themen 9
B Load of Known null Value Allgemeine Java-Themen 9
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
Tobse Vererbung null aus Elternklasse "dominant"? Allgemeine Java-Themen 15
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
I newInstance() liefert null zurück Allgemeine Java-Themen 4
R Attribut null Allgemeine Java-Themen 6
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
E rückgabewert ist immer null Allgemeine Java-Themen 2
N List auf null prüfen Allgemeine Java-Themen 2
TiME-SPLiNTER Von Unix, InputStreams und Null Bytes Allgemeine Java-Themen 2
R dateFormat - Uhr fängt nicht bei null an Allgemeine Java-Themen 2
P Null in ArrayList Allgemeine Java-Themen 3
N Strings mit null wiedergabe Splitten Allgemeine Java-Themen 4
mongole Formatter + null Allgemeine Java-Themen 4
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
A Umgang mit null Allgemeine Java-Themen 16
L Object = null? Allgemeine Java-Themen 16
L null pointer exception Allgemeine Java-Themen 10
nrg Leere Objektreferenz mit != null vergleichen Allgemeine Java-Themen 4
J Null Pointer in der compare-Methode des Comparators? Allgemeine Java-Themen 18
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
D Matrix, ArrayList, null-Zellen Allgemeine Java-Themen 6
F Hibernate speichern - Null Allgemeine Java-Themen 5
knuckles12 null pointer exception bei arrays Allgemeine Java-Themen 6
T WeakHashMap: Wie "null" effizient abfangen? Allgemeine Java-Themen 5
N Null Durchblick in Java, Jobwechsel? Allgemeine Java-Themen 19
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
N Array mit null Werten filtern Allgemeine Java-Themen 5
S Combobox --> liefer null? Allgemeine Java-Themen 3
A java.net.UnkownHostException: null bei jar-File Allgemeine Java-Themen 16
B Null Pointer Exception bei Canvas-objekt-Aufruf Allgemeine Java-Themen 12
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
R if (obj == null || obj.isEmpty()) Allgemeine Java-Themen 21
P <null> in einer DB abfragen Allgemeine Java-Themen 4
G Nicht abgefangene Null-Pointer-Exception Allgemeine Java-Themen 2
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
M getResourceAsStream immer null Allgemeine Java-Themen 4
R Array komplett auf null setzen Allgemeine Java-Themen 10
A JasperReport Detail bringt null bei Datenübergabe Allgemeine Java-Themen 4
S Null Pointer Exception Allgemeine Java-Themen 10
S instanceof und null Allgemeine Java-Themen 7
M Führende Null in einem Datum Allgemeine Java-Themen 3
L null != null ? Allgemeine Java-Themen 16
Redfrettchen Rückgabe nicht sinnvoll: Exception oder null zurück? Allgemeine Java-Themen 9
B Null- oder IllegalArgumentException Allgemeine Java-Themen 12
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
K Exception im Konstruktor / Objekt == null Allgemeine Java-Themen 7
Z bedeutung (übersetzung) von null? Allgemeine Java-Themen 5
T Exception im Constructor -> null-Referenz zurückgeben Allgemeine Java-Themen 6
C Objekte null setzen? Allgemeine Java-Themen 7
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
Survari Variablen Java Function Pointer Allgemeine Java-Themen 8
R Inputstream lesen mit Pointer Allgemeine Java-Themen 0
T C DLL einbinden und Pointer übergeben Allgemeine Java-Themen 13
D Pointer in Java Allgemeine Java-Themen 8
B List Pointer zurücksetzen Allgemeine Java-Themen 10
M JNA Pointer Allgemeine Java-Themen 2
G Pointer und Referenzen Allgemeine Java-Themen 3
F Pointer oder Reference? Allgemeine Java-Themen 8
T JNI: jcharArray: warning: cast to pointer from integer of. Allgemeine Java-Themen 5
O Pointer/reference on method Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben