Slyh: Laden eines Bildes nur sehr langsam

Beitrag lesen

Hallo,

Dabei verwendete ich Code aus verschiedenen Java-Beispielen. Jetzt ist es so, dass diese kleine Fenster, das hier erzeugt wird, immens lange zum Laden braucht. Das Fenster öffnet sich erst eine Sekunde nach Programmstart. Die Grafik darin erscheint erst zwei Sekunden nach Programmstart. Offensichtlich ist eine Menge Overhead vorhanden.

Wie sieht die Prozessorbelastung während dieser 3 Sekunden aus?

Die 1. Sekunden könnte der normale Overhead sein, der beim Laden der
VM und inbesondere der viiieeelen Swing-Klassen benötigt wird. (Swing
ist recht umfangreich. Auch wenn du nur wenig machst, wird da im
Hintergrund recht viel geladen und initialisiert...)

Daß dein Bild erst nach 2 Sekunden erscheint, mag damit zusammen-
hängen, daß es asynchron geladen wird. Durch den Aufruf von
Toolkit.getImage() wird das Laden des Bildes nur "angestoßen". Es
wird erst bei der ersten Anforderung im Hintergrund geladen. Je nach
Implementierung kann dies die genannten 2 Sekunden dauern.

Im Zweifelsfall solltest du das Bild mal über die ImageIO-Klasse
laden, so wie es im Java-Almanac beschrieben ist. Dabei werden die Daten
sofort aus der Datei geladen und stehen somit auch sofort zur Verfügung.

Ich kann mir auch nicht vorstellen, dass ich für das Laden von Bildern Methoden überschreiben muss, wie ich es aber bisher nur sah.

Üblicherweise wird das in Java aber so gemacht. Es gibt zwar im Prinzip
auch andere Möglichkeit. Die bequemste ist aber, eine Komponente
von Component (oder einer anderen passenden Klasse) abzuleiten und
die paint-Methode zu überladen um dann über das Graphics-Objekt das
Bild zu zeichnen.
Dein Code sieht im Prinzip gut aus.

Gruß
Slyh