Grafikdateien laden und anzeigen (Java)
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.
Inhaltsverzeichnis
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
Einfache Applet-Klassen
Die einfachste Variante, eine Grafik in ein Applet (AWT) einzubinden ist, sie von der URL einzulesen und in der paint()-Methode direkt auf die Appletfläche zu zeichnen.
<code=java>import java.awt.*; import java.applet.*;
public class PictureApplet extends Applet {
private Image image;
public void init() { image = getImage(getCodeBase(),"Bild.jpg"); }
public void paint(Graphics g) { if(image != null) { g.drawImage(image, 0, 0, this); } }
}</code=java>
Applikationen
Toolkit#getImage()
(Code-Beispiele folgen noch)
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