Verwenden Sie ImageIO.read(URL)
oder ImageIO.read(File)
stattdessen. Es wird beim Laden blockieren, und die Bildbreite & amp; Höhe wird bekannt sein, nachdem es zurückkehrt.
Alternativ können Sie ein MediaTracker
zum Bild hinzufügen asynchron von der Toolkit
geladen und gewartet, bis sie vollständig geladen ist .
Sie möchten etwas wie dieses:
%Vor% Der java.awt.Toolkit
-Ansatz wird nicht blockiert, gibt also -1 zurück und benachrichtigt den Beobachter (oder nicht in Ihrem Fall, weil er null ist), wenn er geladen wird. Wenn Sie es asynchron möchten, müssen Sie einen Rückruf in Form eines Bildbeobachters bereitstellen.
Oh, und ignoriere nicht einfach Ausnahmen, sondern drucke zumindest die Stack-Trace!
Weil das Bild asynchron im Hintergrund geladen wird.
Wie das getHeight()
javadoc sagt, müssen Sie ein bereitstellen ImageObserver (anstelle von null
), das aufgerufen wird, wenn das Bild geladen wurde.
Toolkit#createImage(...)
ist nicht blockierend . Im Allgemeinen würde ich lieber javax.imageio.ImageIO
verwenden, um Bilder zu lesen.
Um auf Toolkit#createImage(...)
zu warten, verwenden Sie:
Danach können Sie image.getHeight()
Tags und Links java image asynchronous