Je souhaite avoir un emplacement pour stocker mes fichiers image à utiliser dans mon projet Java (une classe très simple qui charge simplement une image sur un panneau). J'ai regardé partout et je ne trouve pas comment faire cela. Comment puis-je faire cela?
J'ai essayé d'ajouter un nouveau dossier au projet, d'ajouter un nouveau dossier de classe au projet et d'ajouter un nouveau dossier source au projet. Quoi que je fasse, je reçois toujours un IOException
. Les dossiers disent toujours qu'ils se trouvent sur le chemin de génération, donc je ne sais pas quoi faire.
import Java.awt.Color;
import Java.awt.Dimension;
import Java.awt.Graphics;
import Java.awt.image.BufferedImage;
import Java.io.File;
import Java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PracticeFrame extends JFrame{
private static BufferedImage image;
Thread thread;
public PracticeFrame() {
super();
setPreferredSize(new Dimension(640,480));
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main (String[] args) {
PracticeFrame pframe = new PracticeFrame();
try {
image = ImageIO.read(new File("/islands.png"));
} catch (IOException e) {
e.printStackTrace();
}
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image,0,0,null);
}
};
panel.setBackground(Color.BLUE);
panel.repaint();
pframe.add(panel);
}
}
EDIT: Quelque chose qui a fonctionné pour moi, et je ne sais pas pourquoi, a été d’ajouter le dossier main/res/
en tant que dossier de classe, puis de le supprimer. Je l'ai exécuté pendant que le /main/res/
faisait partie du chemin de génération en tant que dossier de classe et cela ne fonctionnait toujours pas. Quand je l'ai ajouté, j'ai eu un popup qui m'a dit quelque chose sur les filtres exclus. Mais quand j'ai supprimé le dossier des bibliothèques dans le chemin de construction, j'ai changé mon chemin de fichier en:
image = ImageIO.read(new File("src/main/res/islands.png"));
J'ai au moins cessé de recevoir la IOException
. Je ne dois pas ajouter correctement l'image au panneau, car elle ne s'affiche pas, mais au moins, elle a trouvé le fichier (je pense).
Lorsque vous vous trouvez dans "Ajouter un dossier de ressources", Chemin de construction -> Configurer le chemin de construction -> Source (Onglet) -> Ajouter un dossier -> Créer un nouveau dossier
ajoutez le fichier "my-resource.txt" dans le nouveau dossier . Puis dans votre code:
InputStream res =
Main.class.getResourceAsStream("/my-resource.txt");
BufferedReader reader =
new BufferedReader(new InputStreamReader(res));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
Pour répondre à votre question postée dans le titre de ce sujet ...
Étape 1 -> Clic droit sur le projet Java, sélectionnez l’option "Propriétés"
Étape 2 -> Sélectionnez "Chemin de construction Java" dans le menu de gauche, assurez-vous que vous êtes sur l'onglet "Source", cliquez sur "Ajouter un dossier"
Étape 3 -> Cliquez sur l'option "Créer un nouveau dossier ..." disponible en bas de la fenêtre
Étape 4 -> Entrez le nom du nouveau dossier sous "ressources" puis cliquez sur "Terminer"
Étape 5 -> Vous pourrez maintenant voir le dossier "ressources" que vous venez de créer sous votre projet Java, cliquez sur "OK", puis cliquez à nouveau sur "OK".
Dernière étape -> Vous devriez maintenant pouvoir voir le nouveau dossier "ressources" dans votre projet Java
Après avoir ajouté un dossier de ressources, essayez ceci:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("test.png");
try {
image = ImageIO.read(input);
} catch (IOException e) {
e.printStackTrace();
}
Essayez de donner le chemin complet pour la lecture de l'image.
Exemple image = ImageIO.read (nouveau fichier ("D: /work1/Jan14Stackoverflow/src/Strawberry.jpg"));
votre code ne produit pas d'exception après avoir indiqué le chemin complet . Si vous souhaitez simplement lire un fichier image en code Java ..__, reportez-vous à: - http://docs.Oracle.com/javase/ tutorial/2d/images/examples/LoadImageApp.Java
Si l'objet de votre classe est créé à la fin, votre code me convient et affiche l'image.
// PracticeFrame pframe = new PracticeFrame();//comment this
new PracticeFrame().add(panel);