H-P Ortner: Laden eines Bildes nur sehr langsam

Beitrag lesen

Hallo Markus!

...

... Das Fenster öffnet sich erst eine Sekunde nach Programmstart.

So lange kann es dauern - wenn Rechner schwach oder sonstwie beschäftigt ist. ;o)

Die Grafik darin erscheint erst zwei Sekunden nach Programmstart. Offensichtlich ist eine Menge Overhead vorhanden.

Das ist doch überraschend, wie groß ist das Bild?

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

Doch das ist die übliche Methode

Wie macht man es richtig? Hier das Beispielprogramm:

Richtig ist relativ - ich würd es so machen:

Eine Klasse für das Bild:

  
import java.awt.Graphics;  
import java.awt.Image;  
import java.io.File;  
import javax.imageio.ImageIO;  
import javax.swing.JComponent;  
public class Bild extends JComponent    {  
  private Image image = null;  
  
  public Bild(String fileName){  
    File file= new File(fileName);  
    try {  
      image= ImageIO.read(file);  
    } catch (Exception e){  
      System.err.println(e);  
      System.exit(1);  
    }  
  }  
  
  @Override  
  public void paint(Graphics g) {  
    g.drawImage(image, 0, 0, this);  
  }  
}  

Eine Klasse zum Starten:

  
import javax.swing.JFrame;  
public class Viewer1 {  
 public static void main(String[] args) {  
    JFrame f = new JFrame("GrafikVersuch1");  
    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );  
    f.setLocation(0, 0);  
    f.setSize(400, 200);  
    f.add(new Bild("ws.jpg") );  
    f.setVisible(true);  
 }  
}  

Und dann würde ich der Breite und Höhe des Bildes und ...

Viel Spaß beim Tüfteln, du ist am richtigen Weg.

Viele Grüße

H-P Ortner