Probleme beim Zeichnen und AWT-Event-Queue-0 Exception

O

Otzelot

Gast
Hallo zusammen,
erstmal sei gesagt ich bin ganz frisch im Programmieren mit Swing. Ich wollte mir ein kleinen Spiel bauen. Ich hab jetzt bereits eine Figur die auf Blöcke springen kann und auch sich dort so verhält, wie ich das will.
Ein Problem ist, dass ich nach 2 oder 3 maligem hinzufügen von Blöcken immer "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" erhalte. Es wird dabei immer auf meine Zeile g.paintImage(....); verwiesen.
Jetzt mal zu meine Frage: Kann es sein, dass es daran liegt, dass das Image noch nicht richtig geladen ist? Weil der Fehler tritt immer nur bei mehreren Blöcken auf und nicht wenn ich nur 1 oder 2 hinsetze. Meine einzige Erklärung die ich mir bis jetzt denken konnte wäre die, dass die Programmzeilen zwar aufgerufen werden, aber auf das Laden des Images nicht gewartet wird. Sprich das Programm ist schon soweit, dass er ein Bild zeichnen (bzw. also eine Datei) will, aber das Image noch nicht fertig geladen hat, obwohl vorher dazu aufgefordert wurde. Das war jetzt meine Idee, weil trotzdem alles geht und es gezeichnet wird.
Da zum Beispiel die Images für den Boden ganz oft geladen werden müssten und auch das ganze Programm sehr viele Objekte davon bestizt, wäre es sinnvoller das Image in einer externen Klasse zu laden und jedem Bodenobjekt einen Verweis auf dieses Image Objekt zu geben um so das Image nur einmal zu laden und immer dadurch auf das Bild zuzugreifen? Oder "merkt" sich Java sowieso, dass diese Datei schon geladen wurde und es deswegen genauso schnell geht in jedem Objekt das Image durch angeben der URL zu laden?
Wenn das Problem wirklich durch das Laden verursacht wird: Könnte ich dann das ganze beheben, wenn ich eine Liste aller Objekte bzw. benötigten Images in der externen Klasse einem MediaTracker zuweise und dann nur noch auf die Images in dieser Klasse zugreife?

Vielen Dank.

P.S: Kann mir mal jemand erklären wie der Debugger in Eclipse funktioniert? :D
 
O

Otzelot

Gast
Ehrlich gesagt für mich war das nicht klar!
Ich dachte, wenn ich meine Methode getImages() aufrufe und dort ImageIO.read(blablablub); benutze dann wird das Bild auch erst vollständig geladen, so dass ich nicht etliche Programmzeilen später in einer der Paint Methode auf einmal eine NPE kriegen kann.
 

eRaaaa

Top Contributor
Zeige mal deinen Code...
Aber wie schon gesagt, macht doch gar keinen Sinn jedes mal ein neues Bild/Objekt zu erstellen. Erstelle die Bilder direkt am Anfang ein mal, evtl. in einem static Block oder so...
 
O

Otzelot

Gast
Also es scheint jetzt zu funktionieren.

Hab die Bilder jetzt in eine neue Klasse Images gepackt. Aber wozu dient eigentlich der MediaTracker? Hab es erst damit versucht: Alle Bilder dem MediaTracker hinzugefügt und dann mit .waitForAll() versucht, klappte aber auch nicht. Erst wenn ich das Bilderladen an alle erster Stelle im Programm stelle, also vorm erzeugen der Spielerobjekte und des JFrames usw. dann funktioniert es...aber genauso gut ohne MediaTracker bei dem ich dachte der gerade wenn es nicht an erster Stelle steht erstmal alles stoppt und wartet bis er fertig geladen hat.

Ich glaube so langsamm weiß ich aber auch warum, wahrscheinlich will Swing/AWT zeichnen sobald das Frame erzeugt wurde bzw. der Klasse zugewiesen, deswegen erhalte ich das "true" für die Funktion MediaTracker.checkall() erst nach der Exception. So wie ich es mal gelesen habe zeichnet Swing/AWT immer dann von selber, wenn es das für nötig hält, dass wohl der Fall wäre wenn ein Frame erzeugt wird und es die Zeichenfläche darstellen soll der Klasse, da kann dann der MediaTracker wohl auch nichts für, wenn Swing/AWT schon vorher automatisch auffordert zum Zeichnen bevor ich ihn aufrufe. Also wieder was gelernt :).

Ist das denn richtig so, wie mein Verständniss jetzt ist?

Dass das mit dem jeden Objekt die Bilder laden lassen unsinnig ist, ist mir beim schreiben schon aufgefallen, wie man vielleicht sieht. Wenn ich mir überlege z.B. 60 mal das Boden Objekt zu haben und dafür jedes mal die Bilder laden zu lassen, anstatt einfach einmal die Bilder zu laden und einen Verweis drauf mitzugeben, war es schon großer Blödsinn :D.

P.S: Kann mir jemand vielleicht schnell noch erklären, wie man in Eclipse Schritt für Schritt die Programmzeilen durchgehen kann oder ab einer bestimmten Stelle?

Vielen Dank euch beiden.
 

André Uhres

Top Contributor
Die Bilder würde ich mit ImageIO.read laden, den MediaTracker vergessen.
Mit Eclipse kenn ich mich nicht so aus. Bei NetBeans klickt man links vor die Zeile um einen Stop zu setzen/aufzuheben. Mit F8 geht's Schritt für Schritt weiter. Bei Eclipse wird's wohl nicht viel anders sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
R Probleme beim Zeichnen eines Koordinatensystems AWT, Swing, JavaFX & SWT 10
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
C SWT probleme beim einbinden von Images AWT, Swing, JavaFX & SWT 2
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
N Probleme beim positionieren von Elementen AWT, Swing, JavaFX & SWT 2
A Probleme beim FocusListener AWT, Swing, JavaFX & SWT 6
L Probleme beim Refresh von JTable AWT, Swing, JavaFX & SWT 7
S Swing Probleme beim Aktualisieren einer JComboBox nach Auswahländerung AWT, Swing, JavaFX & SWT 2
K JList-Probleme beim Hinzufügen von Elementen AWT, Swing, JavaFX & SWT 3
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
M Probleme beim Bild einfügen in CenterPanel AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
S Probleme beim Neuzeichnen eines JLabels AWT, Swing, JavaFX & SWT 6
W Probleme beim Erstellen einer Tabelle AWT, Swing, JavaFX & SWT 2
T Probleme beim Resizen einer JScrollPane AWT, Swing, JavaFX & SWT 2
M Probleme beim Hinzufügen von Objekten zu getContentPane() AWT, Swing, JavaFX & SWT 2
G Probleme beim Panelstruktur AWT, Swing, JavaFX & SWT 13
E Probleme beim Layout! AWT, Swing, JavaFX & SWT 8
E Probleme beim Layout mit Buttons und CheckboxGroup AWT, Swing, JavaFX & SWT 9
S Probleme beim Laden und Speichern von Dateien AWT, Swing, JavaFX & SWT 6
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
C Probleme beim ausführen von Programmen mit Fenstern+Inhalt AWT, Swing, JavaFX & SWT 3
Q JTextPane / Probleme beim Einfügen von <br>-Tags AWT, Swing, JavaFX & SWT 2
G Probleme beim Lösen einer Übungsaufgabe AWT, Swing, JavaFX & SWT 5
C Probleme beim 2. öffnen eines Fensters AWT, Swing, JavaFX & SWT 5
A Probleme beim Ausdrucken AWT, Swing, JavaFX & SWT 4
V Probleme beim Scrollen ein JPanels mit JScrollPane AWT, Swing, JavaFX & SWT 2
R Probleme beim Wiederherstellen eines JInternalFrames AWT, Swing, JavaFX & SWT 4
G Probleme beim Füllen einer JTable AWT, Swing, JavaFX & SWT 2
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben