Afficher une image sur ihm

Résolu/Fermé
raygouda Messages postés 69 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 27 août 2013 - 28 déc. 2012 à 16:51
raygouda Messages postés 69 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 27 août 2013 - 29 déc. 2012 à 23:45
Bonjour, à tous

Mon problème est de savoir comment afficher des images de cette manière en prenant le chemin en paramètres c'est à dire à la place de "F:/mesprogrammesenjava/mes.tests/src/mesessais/koala.jpg" je puisse mettre un String que je passerai en paramètre pour afficher l'image.
Que dois je modifier dans le code ci dessous pour le faire?
Merci.

package mesessais;


import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Panneau extends JPanel {
	
  public Panneau() {
		super();
		
	}
public void paintComponent(Graphics g){
    try {
      Image img = ImageIO.read(new File("F:/mesprogrammesenjava/mes.tests/src/mesessais/koala.jpg"));
      g.drawImage(img, 0, 0,100,100, this);
      //Pour une image de fond
      //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
    } catch (IOException e) {
      e.printStackTrace();
    }                
  }  
  public static void main(String argv[]) {
		JFrame f = new JFrame();
	   Panneau p =new Panneau();
	   f.setContentPane(p);
	   f.setSize(1000, 200);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
	   
	
  }
}





A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 déc. 2012 à 17:18
Si par exemple tu passes le chemin via le String[] args, tu devrais donner le chemin args[0] au constructeur de Panneau qui irait chercher le fichier.

Remarque : la méthode paintComponent() est appelée régulièrement, donc c'est une mauvaise idée de mettre la lecture du fichier dans son corps, il vaut mieux lire une seule fois le fichier (dans le constructeur par exemple).

package mesessais;

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Panneau extends JPanel
{
    private static final long serialVersionUID = 1;
    
    private final Image img;
    
    public Panneau(String fileName) throws IOException
    {
        img = ImageIO.read(new File(fileName));
    }
    
    public void paint(Graphics g)
    {
        g.drawImage(img, 0, 0, 100, 100, null);
    }
    
    public static void main(String args[]) throws IOException
    {
        String fileName = args[0];
        Panneau p = new Panneau(fileName);
        
        JFrame f = new JFrame();
        f.setContentPane(p);
        f.setSize(1000, 200);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}
0
raygouda Messages postés 69 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 27 août 2013 1
28 déc. 2012 à 21:57
Ok.
En fait je suis entrain de concevoir une application de vente aux enchères sur rmi.Et pour cela je compte bien afficher l'image de chaque produit qu'on veut vendre aux enchères.A part cette façon y'a t'il pas une façon plus commode d'afficher l'image de chaque produit en prenant son chemin en paramètres.
Car c'est vraiment pas commode pour moi de cette façon.Et en plus je ne sais pas comment affecté le chemin à args[0].

Merci.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 déc. 2012 à 22:38
Pour affecter des valeurs à args ça se passe à l'initialisation. Par exemple :
java mesessais.Panneau C:/image.jpg
Je pensais que c'est ce que tu voulais, visiblement non...
Alors je ne comprends pas ce que tu veux dire par "le chemin en paramètres"

Pour afficher plusieurs images dans la même interface tu peux utiliser un GridLayout.
J'avais fait un code exprès pour ce cas : Ajouter une image dans un GridLayout
0
raygouda Messages postés 69 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 27 août 2013 1
Modifié par raygouda le 29/12/2012 à 23:45
ok.merci.
0