Manchmal grauer Bildschirm; Manchmal nicht

BromBear

Mitglied
Hallo
ich habe seit einer ganzen Weile das Problem das ich bei meinem kleinen Java-Spiel manchmal einen grauen Bildschirm habe und manchmal nicht. Ich habe versucht das Problem herauszufiltern und bin dabei zu der Erkenntnis gekommen, dass wenn ich in meiner Hauptklasse Objekte erstelle
(z.B. "private KeyHandler keyHandler = new KeyHandler(this);"),
dann steigt die Wahrscheinlichkeit einen grauen Bildschirm zu bekommen. Es gibt keine Errors und das Programm läuft super weiter. Man kann alles wie gewohnt ausführen, aber die Graphik blabt aus :(
Ich benutze zum Zeichnen in meiner Klasse (extends JPanel) die paintComponent(Graphics g) Methode und habe in meinem Loop unter run() in meinem Loop repaint(); stehen.
Womit kann das zusammenhängen? Wenn ich noch irgentwelchen Code schreiben soll, sagt welchen.

Ich habe einen Dell Inspiron N7110 mit NVidia GeForce GT 525M Graphikkarte. Ich benutze die JavaSE-1.7 Library und habe die neuste Version von Java.
 

javampir

Bekanntes Mitglied
hi,
versuch mal, in der paintComponent alles bis auf super.paintComponent(g) auszukommentieren und tu den Code dann zeilenweise dazu und schau, wann der fehler auftritt.
javampir
 

BromBear

Mitglied
Selbst wenn ich alles rauskommentiere bleibt der Bildschirm nur grau(ist ja eig. auch klar) aber man sieht das es nicht funktioniert, weil der Cursoe manchmal lädt und manchmal nicht. Ich habe eine Methode initCursor():
[Java]private void initCursor(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("res/gui/cursor/Cursor.png");
Cursor c = toolkit.createCustomCursor(image , new Point(this.getX(), this.getY()), "img");
this.setCursor (c);
} [/Java]

wenn die Grafiken nicht laufen läuft der Cursor auch nicht
 

Foxei

Bekanntes Mitglied
Hi der Fehler ist ganz einfach du benutzt eine "Unpraktische" Methode zum laden der Images.
Java:
Image image = toolkit.getImage("res/gui/cursor/Cursor.png");
Diese Methode starten das laden des Bildes lässt den Thread aber weiter Arbeiten. Da du nun direkt danach das Bild nutzt hat es in diesem Moment nur eine Breite eine Höhe und eine ausgefüllte Grundfläche aber das Bild ist noch nicht gezeichnet.

Wenn du aber alle Bilde mit der ImageIO lädst verschwindet dein Problem von selber da ImageIO den Thread pausiert bis das Bild komplett geladen hat.
Java:
Image img
try {
	img=ImageIO.read("res/gui/cursor/Cursor.png");	
} catch (IOException e) {
        e.printStackTrace();
}

um nicht immer einen try catch Block aufmachen zu müssen kannst du auch eine statische Methode in einer statischen Klasse anlegen.

Java:
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class ImageLoader {
	public static Image loadImage(File file){
		Image img = null;
		try {
			img=ImageIO.read(file);	
		} catch (IOException e) {
		        e.printStackTrace();
		}
		return img;
	}
}

Wenn du die Statische Klasse übernimmst würde dein Code also nun so aussehen.

Java:
private void initCursor(){
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		Image image = ImageLoader.loadImage("res/gui/cursor/Cursor.png");
		Cursor c = toolkit.createCustomCursor(image , new Point(this.getX(), this.getY()), "img");
		this.setCursor (c);
	}

Hoffe ich habe alle zufrieden stellend erklärt. :)

Gruß Simon
 

BromBear

Mitglied
Danke für den Tipp, aber es funkioniert immernoch nur manchmal. Ich habe jetzt die paintComponent() Methode geleert. und den Cursor wie oben geladen. Alle anderen erstellten Images habe ich erstmal auskommentiert. Trotzdem lädt der Cursor manchmal, aber nicht immer.
 

BromBear

Mitglied
Ich habe noch einmal ein bisschen rumprobiert und habe festgestellt, dass selbst bei einem sehr einfachen Programm, dass nur etwas in der Konsole ausgeben soll, wenn die paintComponent Methode mit repaint(); aufgerufen wird, mit einer geringen Wahrscheinlichkeit nicht in die paintComponent Methode gegangen wird und somit nichts ausgegeben wird. Woran könnte das liegen? Ich habe das JRE und JDK bereits neu installiert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Warum nutzt man manchmal setpaint und manchmal setcolor? AWT, Swing, JavaFX & SWT 2
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
T Scene-Wechsel manchmal weiss AWT, Swing, JavaFX & SWT 3
A Applet Gui ist manchmal grau AWT, Swing, JavaFX & SWT 5
S Swing Problem mit Swing - Fenster friert manchmal ein. AWT, Swing, JavaFX & SWT 7
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
T Swing repaint funktioniert nur manchmal? AWT, Swing, JavaFX & SWT 6
S Seltsames Problem - manchmal enthaelt die ActionMap eine JTextArea keine Actions. AWT, Swing, JavaFX & SWT 4
R Manchmal werden die Inhalte des JFrames nicht angezeigt AWT, Swing, JavaFX & SWT 3
K GUI verfärbt sich manchmal AWT, Swing, JavaFX & SWT 32
F Grauer Bildschirm AWT, Swing, JavaFX & SWT 7
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
L JavaFX Pane inklusive Inhalt der Bildschirm Auflösung anpassen AWT, Swing, JavaFX & SWT 13
C JavaFX Positionen auf dem Bildschirm ermitteln AWT, Swing, JavaFX & SWT 1
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
D Neues Dialog Mittig auf dem Bildschirm AWT, Swing, JavaFX & SWT 4
I Get DPI von Bildschirm AWT, Swing, JavaFX & SWT 3
K Swing Bildschirm weiß :o AWT, Swing, JavaFX & SWT 2
B Applet Appletposition auf Bildschirm herausfinden AWT, Swing, JavaFX & SWT 2
T Bildschirm abdunkeln AWT, Swing, JavaFX & SWT 2
Z Swing Buttons wieder entfernen vom Bildschirm AWT, Swing, JavaFX & SWT 5
A setFullscreenWindow()-->Schwarzer Bildschirm AWT, Swing, JavaFX & SWT 10
N RCP/SWT View durch Programm auf 2. Bildschirm verschieben AWT, Swing, JavaFX & SWT 2
F Fenstergroesse abhaengig vom Bildschirm AWT, Swing, JavaFX & SWT 4
K JInternalFrame - schwarzer Bildschirm AWT, Swing, JavaFX & SWT 2
M DragAndDrop-Waypoints bewegen, ABER Bildschirm flackert AWT, Swing, JavaFX & SWT 3
F Bildschirm schwarz abdecken AWT, Swing, JavaFX & SWT 8
S Eingeschränkte Ausgabe auf 2. Bildschirm? (Laptop VGA Output AWT, Swing, JavaFX & SWT 4
I Pop-Up löscht Bildschirm ! AWT, Swing, JavaFX & SWT 3
M Mousekoordinaten und Bildschirm? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben