Ajout d'image à un Composite par ImageIO.lire?
J'essaye d'ajouter un Composite avec une photo. Je suis en utilisant ImageIO.lire pour obtenir le chemin d'accès, mais je reçois une IOException disant : ne peut pas lire le fichier d'entrée
L'image est appelée TCHLogo. C'est un PNG à l'intérieur d'un 'res' dossier à l'intérieur de mon projet.
Si il ya une meilleure façon d'afficher cette image, veuillez également mentionner!
Voici le code de mon Composite:
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
}
}
Ici est de savoir comment je ajouter le Composite dans mon Applet:
ImagePanel appletRunningPanel;
appletRunningPanel = new ImagePanel();
appletRunningPanel.setSize(300, 300);
appletRunningPanel.validate();
add(appletRunningPanel);
MODIFIER
J'ai créé un dossier à l'intérieur de la poubelle à l'application commence à regarder dans actuellement..
le dossier est appelé res et l'image est à l'intérieur..
Maintenant j'ai le IOException quand je lance la ligne:
image = ImageIO.read(getClass().getResourceAsStream("res/TCHLogo.png"));
Voici le log d'erreur:
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)
OriginalL'auteur Rakso | 2011-11-13
Vous devez vous connecter pour publier un commentaire.
Probable que votre image du chemin d'accès au fichier n'est pas correct par rapport au répertoire de l'utilisateur. Pour savoir où Java est de commencer à regarder, où le répertoire de l'utilisateur est, de la place quelque chose comme cette ligne de code quelque part dans votre programme:
Peut-être que vous seriez mieux d'obtenir l'image comme un InputStream obtenu à partir d'une ressource et non comme un fichier. par exemple,
Cela permettra de rechercher l'image sur le chemin donné par rapport à l'emplacement des fichiers de classe, et en fait c'est ce que vous doit faire si votre image se trouve dans votre fichier jar.
Edit 2
Comme une parenthèse, souvent, vous devez d'abord appeler le super de la méthode paintComponent avant de faire tout de votre propre dessin de façon à permettre nécessaire de ménage peut être fait, comme de se débarrasser de la "sale" bits d'image. par exemple, modifiez ce qui suit:
:
voir modifier.
Il commence à regarder dans l'espace de travail/Applet/bin.. je peux peut-être créer un dossier dans le dossier bin du projet.. Mais ces images-être aussi dans la .jar fichier quand je l'exporter?
ils seront dans le pot, si vous les mettez dans le pot. Qu'utilisez-vous pour modifier vos programmes, un IDE? Si donc, la plupart des assistants pour vous aider à créer un fichier jar et à ajouter les fichiers sélectionnés et les ressources.
Lorsque j'essaie d'utiliser votre ligne de code (image=ImageIO.lire(getClass().getResourceAsStream("res/TCHLogo.png"));) j'obtiens ce message d'erreur: java.lang.IllegalArgumentException: entrée == null! au javax.imageio.ImageIO.lire(ImageIO.java:1338) à surprice.l'applet.ImagePanel.<init>(ImagePanel.java:17) à surprice.l'applet.MainClass.init(MainClass.java:41) au soleil.l'applet.AppletPanel.exécuter(AppletPanel.java:436) à java.lang.Fil de discussion.exécution(Thread.java:679)
OriginalL'auteur Hovercraft Full Of Eels
J'ai écrit cette ImagePanel classe que j'utilise pour ce champ d'application :
Puis-je utiliser le ImagePanel de cette façon :
OriginalL'auteur aleroot