Ouvrir image dans une fenêtre
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
parousky Messages postés 325 Date d'inscription Statut Membre Dernière intervention -
parousky Messages postés 325 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je suis débutant en java et je voudrais créer des classes permettant l'ouverture d'une fenêtre affichant une image que j'aurai sélectionné. Alors j'ai créé une classe Ecran qui va se charger de l'ouverture de la fenêtre et une classe Fond qui va traduire ce qui se trouvera dans cette fenêtre. Alors voilà les codes de ces classes :
Ecran :
import javax.swing.JFrame;
import java.awt.Color;
public class Ecran extends JFrame
{
public Ecran()
{
this.setSize(300,300);
this.setTitle("Cards");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setContentPane(new Fond());
this.setVisible(true);
}
}
Fond :
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Fond extends JPanel
{
public void paintComponent(Graphics g){
try {
Image img = ImageIO.read(new File("images.jpg"));
g.drawImage(img, 0, 0, this);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Mais je ne sais pas réellement quoi écrire pour faire apparaître l'image que je veux, parce qu'avec cette classe Fond, le fichier cherché sera "images.jpg". Mais ce fichier seul ne peut pas exister puisque les images s'appellent toujours C:\Users\pictures..... Alors imaginons j'ai un fichier qui s'appelle "Chien.png" dont le chemin est C:\Users\pictures\Chien.png, quel code dois-je écrire ?
Merci d'avance pour vos réponses !
Ecran :
import javax.swing.JFrame;
import java.awt.Color;
public class Ecran extends JFrame
{
public Ecran()
{
this.setSize(300,300);
this.setTitle("Cards");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setContentPane(new Fond());
this.setVisible(true);
}
}
Fond :
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Fond extends JPanel
{
public void paintComponent(Graphics g){
try {
Image img = ImageIO.read(new File("images.jpg"));
g.drawImage(img, 0, 0, this);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Mais je ne sais pas réellement quoi écrire pour faire apparaître l'image que je veux, parce qu'avec cette classe Fond, le fichier cherché sera "images.jpg". Mais ce fichier seul ne peut pas exister puisque les images s'appellent toujours C:\Users\pictures..... Alors imaginons j'ai un fichier qui s'appelle "Chien.png" dont le chemin est C:\Users\pictures\Chien.png, quel code dois-je écrire ?
Merci d'avance pour vos réponses !
A voir également:
- Ouvrir image dans une fenêtre
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Ouvrir fichier .dat - Guide
- Ouvrir une fenêtre de navigation privée - Guide
- Comment ouvrir un fichier docx ? - Guide
2 réponses
Si tu mets "images.jpg" tout seul, le fichier sera cherché avec un chemin relatif.
Celui-ci est plus ou moins à la racine de ton projet Java selon ta configuration.
En revanche si tu mets expressément "C:" cela va cherché le fichier en chemin absolu. Dans ce cas en Java tu peux écrire
On peut aussi faire plus compliqué et manipuler des images que tu aurais mis à l'intérieur du jar qui contient tes classes, mais je ne penses pas que tu en ai besoin ici.
Celui-ci est plus ou moins à la racine de ton projet Java selon ta configuration.
En revanche si tu mets expressément "C:" cela va cherché le fichier en chemin absolu. Dans ce cas en Java tu peux écrire
new File("C:\\Users\\...")en doublant les \ vu que c'est un caractère spécial. Cependant en Java on préconise plutôt d'utiliser des / pour avoir
new File("C:/Users/..."). Dans les deux cas ça marchera.
On peut aussi faire plus compliqué et manipuler des images que tu aurais mis à l'intérieur du jar qui contient tes classes, mais je ne penses pas que tu en ai besoin ici.
D'abord merci beaucoup ça marche très bien ! Ensuite, le truc avec .jar m'intéresse quand même si ! Puisque j'aimerai pouvoir faire tourner mon programme sur n'importe quel ordinateur sans avoir besoin d'insérer l'image en question dans les documents de l'utilisateur. Alors il existe un moyen pour "insérer" une image dans le code d'une classe pour que le programme ne cherche plus dans les documents utilisateur mais directement dans son propre code ?
Je ne suis peut-être pas très bien exprimé mais j'espère que tu auras bien cerné ma question !
Je ne suis peut-être pas très bien exprimé mais j'espère que tu auras bien cerné ma question !