resize - Label bleibt erst schwarz

Javt

Aktives Mitglied
Moin!

Ich hab ein Problem mit folgendem Code:
Java:
    public static Image skalieren(Image img, int width, int height) {
        BufferedImage resizedImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = resizedImg.createGraphics();
        g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,  
                                          RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g2.drawImage(img, 0, 0, width, height, null);
        g2.dispose();

        return resizedImg;
    }
    
    private void button1_ActionPerformed(java.awt.event.ActionEvent evt) {
        Image org = Toolkit.getDefaultToolkit().getImage("/home/stat.jpg");
        Image img1 = skalieren(org, 48, 100);
        label_image.setIcon(new javax.swing.ImageIcon(img1)); // NOI18N
    }

Ich habe en Button. Wenn ich auf den Klicke, dann wird die Methoe "button1_ActionPerformed()" ausgeführt. Nun wird der Icon für das Label erst komplett schwarz angezeigt, erst wenn ich das zweite Mal auf den Button klicke, so erscheint das Bild. Woran liegt das?

Hoffe auf eure Hilfe
 
Zuletzt bearbeitet:
Liegt vermutlich am Toolkit. Das ist recht unperformat. Nimm [JAPI]ImageIO[/JAPI], das ist schneller und moderner.
...aber trotzdem wäre der Inhalt der actionPerformed()-Methode noch interessant.
 
Hi,

Danke für den Tipp mit dem ImageIO. Mit ImageIO wird es tatsächlich sofort angezeigt. Wieso funktioniert es mit dem Toolkit nicht??

greetz
 
Zuletzt bearbeitet:
Zeige doch einfach mal deine actionPerformed()-Methode! :bahnhof: Ich meine die, die überschrieben wurde ([JAPI]ActionListener[/JAPI]).

[EDIT]Toolkit ruft ohne kontrolliert zu haben, ob das Bild fertig geladen ist, die paint()-Methode auf. Da kann es passieren, dass nichts gezeichnet wird, weil das Bild noch nicht fertig in den Speicher geladen wurde.
Abhilfe schafft der MediaTracker, der erst die Kontrolle ans Programm zurück gibt, wenn das Bild fertig geladen ist. Nichts anderes macht ImageIO auch.
Ich habe das mal vor einiger Zeit hier zusammengtragen: Grafikdateien laden und anzeigen ? Byte-Welt Wiki[/EDIT]
 

Zurück
Oben