Grafikdateien laden und anzeigen (Java)

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
Baustelle.png Dieser Beitrag wird derzeit noch bearbeitet. Der Text ist deshalb unvollständig und kann Fehler oder ungeprüfte Aussagen enthalten.

Häufig möchte man aus verschiedenen Gründen Grafikdateien, wie Icons, Eyecatcher oder Fotos in Java-Programme einbinden. Im Folgenden soll anhand von Code-Beispielen gezeigt werden, wie unter verschiedenen Bedingungen und GUI-Schnittstellen (AWT/Swing) Grafiken eingebunden werden können.

Laden von Grafikdateien im AWT

Im AWT, welches die Standard-Schnittstelle für die Entwicklung grafischer Benutzeroberflächen bis zur Veröffentlichung von Java 1.2 war, wird das Einlesen von Grafikdaten in Applets und Applikationen unterschiedlich gehandhabt. Bis auf den gleichen Namen der benutzten Methode zum Einlesen, müssen hier verschiedene Konzepte angewendet werden.

Applets

Applet#getImage()

Applikationen

Toolkit#getImage()

Laden von Grafikdateien in Swing

In Swing haben die Java-Erfinder von Sun eine sehr leistungsfähige Klasse für das Einlesen von Grafikdaten aus unterschiedlichen Quellen entwickelt, die auch die Anwendung in Applets und Applikationen vereinheitlicht.

JApplets

In Swing-Applets kann für das effiziente Einlesen von Grafikdaten die Klasse javax.imageio.ImageIO verwendet werden.
Wie einfach ihre Benutzung ist, werden wir im Anschluss demonstrieren.

Einfache JApplet-Klassen

Direktes Zeichnen auf das JApplet: <code=java> import javax.swing.*; import javax.imageio.*; import java.awt.*; import java.net.*; import java.io.*;


public class PictureApplet extends JApplet {

  private Image image;
  public void init() {
     try {
        image = ImageIO.read(new URL(getCodeBase(), "Bild.jpg"));
     }
     catch(IllegalArgumentException iae) {

JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");

     }
     catch(IOException ioe) {

JOptionPane.showMessageDialog(this, "Fehler beim Einlesen der Grafikdatei!");

     }
  }
  public void paint(Graphics g) {
     super.paint(g);
     if(image != null) {
        g.drawImage(image, 0, 0, this);
     }
  }

}</code=java>

Link: Einbinden von Applets in HTML-Dateien

Applets in Jar-Dateien

Wenn sich das Applet gemeinsam mit der zu ladenden Grafik in einer Jar-Datei zusammengefasst wurden, muss die Grafik über den ClassLoader ins Applet geladen werden.

Direktes Zeichnen auf das JApplet: <code=java> import javax.swing.*; import javax.imageio.*; import java.awt.*; import java.net.*; import java.io.*;


public class PictureApplet extends JApplet {

  private Image image;
  public void init() {
     try {
        image = ImageIO.read(getClass().getResource("Bild.jpg"));
     }
     catch(IllegalArgumentException iae) {

JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");

     }
     catch(IOException ioe) {

JOptionPane.showMessageDialog(this, "Fehler beim Einlesen der Grafikdatei!");

     }
  }
  public void paint(Graphics g) {
     super.paint(g);
     if(image != null) {
        g.drawImage(image, 0, 0, this);
     }
  }

}</code=java>

Das Applet-Tag in der HTML-Datei muss jetzt angepasst werden, damit der Browser weiß, wo sich das Applet befindet.
Link: Applet-Tag für Jar-Dateien

Swing-Applikationen