Hinzufügen von Bildern auf JPanel über ImageIO.Lesen?
Ich versuche, fügen Sie ein JPanel mit einem Bild. Ich bin mit ImageIO.Lesen, um den Pfad abrufen, jedoch bekomme ich eine IOException aus, zu sagen : can ' T read input file
Dem Bild heißt TCHLogo. Es ist eine PNG in einer 'res' Ordner in meinem Projekt.
Wenn es irgendeine bessere Art der Darstellung das Bild bitte auch erwähnen!
Hier ist der code für mein JPanel:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class ImagePanel extends JPanel{
private BufferedImage image;
public ImagePanel() {
try {
//THIS LINE BELLOW WAS ADDED
image = ImageIO.read(getClass().getResourceAsStream("res/TCHLogo.png"));
} catch (IOException ex) {
//handle exception...
System.out.println(ex);
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); //THIS LINE WAS ADDED
g.drawImage(image, 0, 0, null); //see javadoc for more info on the parameters
}
}
Hier ist, wie ich hinzufügen JPanel in meinem Applet:
ImagePanel appletRunningPanel;
appletRunningPanel = new ImagePanel();
appletRunningPanel.setSize(300, 300);
appletRunningPanel.validate();
add(appletRunningPanel);
BEARBEITEN
Ich erstellt einen Ordner in der bin, die die Anwendung gestartet wird, suchen Sie in aktuell..
der Ordner namens res, und das Bild ist drinnen..
Nun bekomme ich folgende IOException aus, wenn ich die Zeile:
image = ImageIO.read(getClass().getResourceAsStream("res/TCHLogo.png"));
Hier ist der error log:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1338)
at surprice.applet.ImagePanel.<init>(ImagePanel.java:17)
at surprice.applet.MainClass.init(MainClass.java:41)
at sun.applet.AppletPanel.run(AppletPanel.java:436)
at java.lang.Thread.run(Thread.java:679)
InformationsquelleAutor Rakso | 2011-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich, dass dein Bild den Dateipfad nicht korrekt relativ zu dem Benutzer-Verzeichnis. Finden Sie heraus, wo Sie Java starten, um zu schauen, wo das Benutzer-Verzeichnis ist, etwas wie diese Zeile code irgendwo in Ihrem Programm:
Vielleicht würden Sie besser dran, bekommen das Bild als InputStream, die aus einer Ressource und nicht als Datei. z.B.,
Diesem Aussehen wird das Bild am Pfad angegeben, relativ zum Speicherort der Klassendateien an, und in der Tat ist dies, was Sie muss tun, wenn Ihr Bild befindet sich in deinem jar-Datei.
Edit 2
Als ein beiseite, oft müssen Sie zunächst rufen Sie die super die paintComponent-Methode, bevor Sie Ihre eigene Zeichnung, um zu ermöglichen, Bedarf Haus-halten getan werden kann, wie loswerden von "dirty" Bild-bits. z.B., ändern Sie diese:
:
sehen Sie auf Bearbeiten.
Es beginnt zu schauen, im Arbeitsbereich/Applet/bin.. Vielleicht kann ich einen Ordner erstellen, in den Ordner bin des Projekts.. Aber diese Bilder werden auch in der .jar Datei, wenn ich es exportieren?
Sie werden in das Glas, wenn Sie Sie in das Glas. Was verwenden Sie zum Bearbeiten Ihrer Programme, eine IDE? Wenn so viele Assistenten unterstützen Sie beim erstellen einer jar-Datei und zum hinzufügen von ausgewählten Dateien und Ressourcen.
Wenn ich versuche, verwenden Sie Ihre code-Zeile (image=ImageIO.read(getClass().getResourceAsStream("res/TCHLogo.png"));) bekomme ich diese Fehlermeldung: java.lang.IllegalArgumentException: input == null! bei javax.imageio.ImageIO.Lesen(ImageIO.java:1338) at surprice.applet.ImagePanel.<init>(ImagePanel.java:17) at surprice.applet.MainClass.init(MainClass.java:41) at sun.applet.AppletPanel.run(AppletPanel.java:436) auf java.lang.Thread.run(Thread.java:679)
InformationsquelleAutor Hovercraft Full Of Eels
Habe ich geschrieben das ImagePanel Klasse, dass ich für diese Umfang :
Dann nutze ich das ImagePanel in dieser Weise :
InformationsquelleAutor aleroot